ListBoxItem 的 Interaction.Triggers [英] Interaction.Triggers for ListBoxItem

查看:20
本文介绍了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 模式,因为您仍在从完全相同的视图调用完全相同的命令.

另一种选择是使用 附加封装上述功能并设置附加属性的行为如下: