ListBoxItem 的 Interaction.Triggers [英] Interaction.Triggers for ListBoxItem
本文介绍了ListBoxItem 的 Interaction.Triggers的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何为整个 ListBoxItem
设置 Interaction.Triggers
?我看过
即使我在红色 Border
之外单击,我也想为特定项目触发事件触发器,目前没有发生这种情况.
解决方案
最简单的方法是在视图的代码隐藏中处理 ListBoxItem
的事件并调用来自那里的命令:
private void ListBoxItem_MouseUp(object sender, MouseButtonEventArgs e) =>调用命令(发件人);private void ListBoxItem_TouchUp(object sender, TouchEventArgs e) =>调用命令(发件人);私有无效 InvokeCommand(对象发送者){ListBoxItem lbi = 发送者为 ListBoxItem;var vm = DataContext as YourViewModel;如果(虚拟机!= null)vm.CharacterClick.Execute(lbi.DataContext);}
XAML:
<Style TargetType="ListBoxItem" BasedOn="{StaticResource {x:Type ListBoxItem}}"><Setter Property="Focusable" Value="False"/><EventSetter Event="MouseUp" Handler="ListBoxItem_MouseUp"/><EventSetter Event="TouchUp" Handler="ListBoxItem_TouchUp"/></风格></ListBox.ItemContainerStyle>
不,这不会破坏 MVVM 模式,因为您仍在从完全相同的视图调用完全相同的命令.
另一种选择是使用 附加封装上述功能并设置附加属性的行为如下: