触发器,命令不在自定义ListBox的ItemTemplate中触发
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了触发器,命令不在自定义ListBox的ItemTemplate中触发相关的知识,希望对你有一定的参考价值。
我有一个自定义的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>
我怎样才能举起这个活动?
答案
我认为这应该是一个用户控件而不是自定义控件。
你是否真的要将模板更改为其他内容?
如果您使用这样的事件处理程序,那么您打算如何使用委托?这是一种非常不灵活的工作方式。
你提到了命令,这可能更像是它。
如果您使用项目模板中的按钮,其命令绑定为
<Button Command="{Binding RowCommand}"
然后该Button的datacontext是行的内容。
如果将ItemsSource绑定到ItemVM的集合Items,那么它将查找呈现给该行的ItemVM。
以上是关于触发器,命令不在自定义ListBox的ItemTemplate中触发的主要内容,如果未能解决你的问题,请参考以下文章
自定义的 ListBoxItem 自适应ListBox的宽度
WPF自定义控件与样式-ScrollViewer与ListBox自定义样式