【发布时间】:2010-07-13 14:57:57
【问题描述】:
我目前正在将一个中型 WPF 项目转换为 MVVM,但遇到了一个我无法解决的问题。也许你能帮帮我?
目标框架是 .NET 3.5.1。
我有一个列表视图,它从底层视图模型中获取其项目。该视图模型公开了从列表视图中删除所选项目的命令。因此,命令参数绑定到列表视图的 SelectedItems 属性。
<ListView ItemsSource="{Binding MyItems}"
x:Name="MyListView"
SelectionMode="Extended">
</ListView>
<Button x:Name="MyRemoveButton"
Content="Remove item"
Command="{Binding RemoveItemCommand}"
CommandParameter="{Binding ElementName=MyListView, Path=SelectedItems}">
我的意图是不仅在按下按钮时执行此命令,而且在列表视图上触发 KeyUp 事件并且按下的键为“删除”时执行此命令。
当我偶然发现此示例中的交互触发器时,我差点找到解决方案:
现在这个演示的问题是命令参数是按下的键,但在我的情况下,我需要命令参数是 SelectedItems 属性,并且我需要命令仅在特定键上执行。
有没有什么方法可以在没有太多开销的情况下以 MVVM 方式做到这一点?
这样的东西会很棒:
<i:Interaction.Triggers>
<i:EventTrigger EventName="KeyUp">
<local:CommandAction Command="{Binding RemoveItemCommand}"
CommandParameter={Binding ElementName=MyListView, Path=SelectedItems}
EventArgument="Key.Delete"/>
</i:EventTrigger>
</i:Interaction.Triggers>
【问题讨论】:
标签: c# wpf events mvvm command