以前都是控件绑定Command,MvvmLight进行绑定很简单,使用Blend几步操作就好,但是这短时间的项目需要绑定键盘事件。结果发现MvvmLight绑定按键很麻烦。看到有篇文章说Silverlight可以使用KeyTrigger进行Command绑定,但是实际测试的时候在WPF中KeyTrigger中定义InvokeCommandAction,其中CommandName属性不支持绑定,而且不支持Command属性。项目已经基本完工,临时改架构肯定不可能,OK,我们只能借用CodeBehind来调用ViewModel的Command。当然这样子是比较丑陋的写法。当然可以重写EventToCommand来进行按键的Command绑定。这样子比较优雅的写法,这是后话。

     OK,我们先看用CodeBehind的Shit代码……

在ViewModel中有这样的Command代码:

//定义Command
   2:  
public MainViewModel()
   4:        {
   5:           
new RelayCommand(
   7:                ()=>{
//加入自己的代码逻辑
   9:                }
  10:                );
  11:         }

 

    我们在界面的CodeBehind代码中加入按键事件。首先给Window添加

KeyUp事件。在Xaml中添加 KeyUp="Window_KeyUp" 即可。

然后在*.Xaml.cs中的事件中进行Command调用。

object sender, System.Windows.Input.KeyEventArgs e)
   2: {
switch (e.Key)
   4:     {
case Key.S:              
null);
break;
default:
break;
  10:     }
  11: }

   我们知道,Command都有两个事件,CanExecute和Execute,执行Execute事件即调用该Command。OK,现在键盘事件已经和Command绑定。

当然,如果想获得如同控件绑定Command那样优雅的写法,就需要重写EventToCommand,以后再详述。

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-07-17
  • 2022-12-23
猜你喜欢
  • 2021-09-13
  • 2022-12-23
  • 2022-12-23
  • 2021-12-09
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案