Silverlight 4.0 使用键盘上的Enter键和鼠标单击将按钮绑定到命令

Silverlight 4.0 使用键盘上的Enter键和鼠标单击将按钮绑定到命令,silverlight-4.0,button,command,mvvm-light,Silverlight 4.0,Button,Command,Mvvm Light,我有一个用MVVM Light构建的Silverlklight 4应用程序。我有各种各样的视图,上面有按钮,这些按钮绑定到viewmodels中的命令 一切都很好,当你点击一个按钮时,命令就会启动,任何被称为的东西都会工作 我想改变的是,用户不必使用鼠标按下按钮来调用命令,我希望他们可以选择按键盘上的回车键 我认为这很简单,但目前我陷入困境,找不到任何关于如何实现这一目标的信息。有什么想法吗。为什么不在控件上添加一个KeyUp事件,然后在代码中处理“回车”键,在视图模型中触发事件 例如: 在XA

我有一个用MVVM Light构建的Silverlklight 4应用程序。我有各种各样的视图,上面有按钮,这些按钮绑定到viewmodels中的命令

一切都很好,当你点击一个按钮时,命令就会启动,任何被称为的东西都会工作

我想改变的是,用户不必使用鼠标按下按钮来调用命令,我希望他们可以选择按键盘上的回车键


我认为这很简单,但目前我陷入困境,找不到任何关于如何实现这一目标的信息。有什么想法吗。

为什么不在控件上添加一个KeyUp事件,然后在代码中处理“回车”键,在视图模型中触发事件

例如:

在XAML中:

......... KeyUp="Control_KeyUp" />
在代码隐藏中:

private void Control_KeyUp(object sender, System.Windows.Input.KeyEventArgs e)
    {
        if(e.Key == System.Windows.Input.Key.Enter)
        {
            GlobalViewModelLocator.ViewModel.FireControlCommand(..);
        }
    }

其中GlobalViewModelLocator指的是一个静态类,该类包含对视图中使用的视图模型的引用。

感谢回复Vixen。我知道这是怎么回事。我已经使用代码对它进行了排序

在xaml中,我向我所在控件的属性添加了一个keydown事件,在我的例子中,该控件是一个网格,但可以是一个列表框、文本框或其他任何东西

然后在后面的代码中我添加了

private void IfEnterIsPressed(object sender, KeyEventArgs e)
{
   if (e.Key == Key.Enter)
   { 
      var vm = DataContext as ViewModel; if (vm != null) vm.MyCommand.Execute(null); 
   }            
}

这对我有用

很酷。本质上,这就是我在回答中提出的:)干杯