触发器,命令不在自定义ListBox的ItemTemplate中触发

问题描述 投票:0回答:1

我有一个自定义的ListBox控件,在我的Themes / Generic.xaml中设置了一个样式。然后我在ListBox的ItemTemplate中有一个按钮,它的Click事件没有触发,我不知道为什么。按钮的命令(我确信命令问题与DataContext无关)和交互触发器也是如此。在尝试调试时,我注意到使用默认的ListBox而不是我自己停止了问题,但我需要使用自定义控件。

这基本上就是我所拥有的(为了简洁而去掉了绒毛)。按钮:

<controls:CustomListBox>
  <ListBox.ItemTemplate>
    <DataTemplate>
      <Button Click=MyHandler/>
    </DataTemplate>
  </ListBox.ItemTemplate>
</controls:CustomListBox>

以及Themes / Generic中的自定义控件样式:

<Style TargetType="{x:Type controls:CustomListBox}">
  <Setter Property="Template">
    <Setter.Value>
      <ControlTemplate TargetType="{x:Type controls:CustomListBox}">
        <Border>
          <ScrollViewer Focusable="false" Padding="{TemplateBinding Padding}">
            <ItemsPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
          </ScrollViewer>
         </Border>
       </ControlTemplate>
     </Setter.Value>
   </Setter>
 </Style>

我怎样才能举起这个活动?

wpf events listbox custom-controls listboxitem
1个回答
0
投票

我认为这应该是一个用户控件而不是自定义控件。

你是否真的要将模板更改为其他内容?

如果您使用这样的事件处理程序,那么您打算如何使用委托?这是一种非常不灵活的工作方式。

你提到了命令,这可能更像是它。

如果您使用项目模板中的按钮,其命令绑定为

 <Button Command="{Binding RowCommand}"

然后该Button的datacontext是行的内容。

如果将ItemsSource绑定到ItemVM的集合Items,那么它将查找呈现给该行的ItemVM。

© www.soinside.com 2019 - 2024. All rights reserved.