我有一个自定义ListBox控件,该控件具有在我的Themes / Generic.xaml中设置的样式。然后,我在列表框的ItemTemplate中有一个按钮,并且它的Click事件没有触发,我也不知道为什么。按钮的Commands(我相信Command问题与DataContext无关)和交互触发器也是如此。在尝试调试时,我注意到使用默认的ListBox而不是我自己的列表框已解决了问题,但是我需要使用自定义控件。
从本质上讲,这就是我所拥有的(为了简洁起见,除去绒毛)。按钮:
<controls:CustomListBox>
<ListBox.ItemTemplate>
<DataTemplate>
<Button Click=MyHandler/>
</DataTemplate>
</ListBox.ItemTemplate>
</controls:CustomListBox>
主题/通用中的自定义控件样式:
<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>
如何触发此事件?
答案 0 :(得分:0)
我认为这可能应该是用户控件而不是自定义控件。
您真的要为此更改模板吗?
如果您使用类似的事件处理程序,那么您打算如何使用委托?这是您工作的一种非常灵活的方式。
您提到的命令,可能更像它。
如果您在项目模板中使用带有命令绑定之类的按钮
<Button Command="{Binding RowCommand}"
然后该Button的数据上下文就是该行的内容。
如果将ItemsSource绑定到ItemVM的Items集合,则它将在显示给该行的ItemVM中查找。