使用EventTrigger调用特定键

时间:2015-06-04 08:39:31

标签: c# wpf mvvm-light keydown eventtrigger

我目前有一个调用KeyDown事件的EventTrigger,然后使用此触发器使用EventToCommand调用ViewModel命令。指定KeyDown事件中使用的密钥的最佳方法是什么(除了使用KeyEventArgsCommandParameter传递给PassEventArgsToCommand之外?

示例:

<i:Interaction.Triggers>
    <i:EventTrigger EventName="KeyDown">
        <command:EventToCommand Command="{Binding Path=TestCommand}"
                                CommandParameter="{Binding ElementName=tempListView,
                                                           Path=SelectedItem}" />
     </i:EventTrigger>
</i:Interaction.Triggers>

对此的任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

如果需要使用键事件数据

,则只能使用命令参数绑定一个元素
<i:Interaction.Triggers>
    <i:EventTrigger EventName="KeyDown">
        <command:EventToCommand Command="{Binding Path=TestCommand}"  PassEventArgsToCommand="True"/>
     </i:EventTrigger>
</i:Interaction.Triggers>

public RelayCommand<KeyEventArgs> Command { get; private set; }

或者,如果您使用的是列表框,并且您想要该项目,则应该这样做:

 <i:Interaction.Triggers>
        <i:EventTrigger EventName="KeyDown">
              <command:EventToCommand Command="{Binding Path=TestCommand}"  CommandParameter="{Binding}"/>
         </i:EventTrigger>
    </i:Interaction.Triggers>

如果你需要Key 这个项目,那就更复杂了,在绑定的集合上你可以将所描述的触发器的使用与绑定的 SelectedItem <结合起来/ strong>,因此当命令被触发时,您可以检查ViewModel上的所选项目。