1

我有这个MainWindow.xaml

<Window.InputBindings>
  <KeyBinding Key="O" Modifiers="Control" Command="{Binding OpenCommand}" />
  <KeyBinding Key="S" Modifiers="Control" Command="{Binding SaveCommand}" />
</Window.InputBindings>

我有几个带有自己视图模型的子视图。例如,我有 a FileViewwith aFileViewModel和 a DataViewwith a DataViewModel。在两个视图模型中,我都有一个实现OpenCommand

public ICommand OpenCommand
{
    get
    {
        if (openCommand == null)
        {
            openCommand = new RelayCommand(param => this.OpenFile());
        }

        return openCommand;
    }
}

当我按Ctrl+时O,我希望OpenCommand为活动视图的视图模型执行命令。因此,如果我按下我的 , 中的键FileViewOpenFile()就会被执行。如果我在我的 , 中输入密钥DataViewOpenData()将被执行。一种MDI行为。

上面的代码不起作用。

你如何实现这种类型的键绑定/命令处理?

4

1 回答 1

1

OpenCommand由于您对inFileView和有单独的实现,因此DataView您还应该将 a 添加KeyBinding到这些视图中。

<Page.InputBindings>
    <KeyBinding Key="O" Modifiers="Control" Command="{Binding OpenCommand}" />
    <KeyBinding Key="S" Modifiers="Control" Command="{Binding SaveCommand}" />
</Page.InputBindings>

或者

<UserControl.InputBindings>
    <KeyBinding Key="O" Modifiers="Control" Command="{Binding OpenCommand}" />
    <KeyBinding Key="S" Modifiers="Control" Command="{Binding SaveCommand}" />
</UserControl.InputBindings>
于 2013-01-30T13:13:24.317 回答