0

我正在开发一个 WPF 应用程序,其中有一个 RibbonWindow 类型的 MainWindow 和(显然)一个 Ribbon 控件;我正在尝试将 KeyGestures 添加到来自 viewmodel 的一些命令中,但无法做到,我已经阅读了很多关于并应用了一些给出的答案的问题和文章,但无法弄清楚出来。

我尝试过的一些事情:

1 从代码隐藏中添加 KeyGesture(甚至使用其他命令进行测试,例如 ApplicationCommands.Close):

private KeyGesture _closeGesture = new KeyGesture(Key.E, ModifierKeys.Control);
private KeyBinding _closeBinding;
//...
public MainWindow()
{
   InitializeComponent();
   _closeBinding = new KeyBinding(ApplicationCommands.Close, _closeGesture);
   this.InputBindings.Add(_closeBinding);
}

2 直接在 XAML 中添加 KeyGesture:

<rcl:RibbonWindow.InputBindings>
    <KeyBinding Command="ApplicationCommands.Close" 
                Key="E" Modifiers="Control" />
</rcl:RibbonWindow.InputBindings>

3 使用上述任何方法添加 KeyGesture,但将其绑定到 viewmodel 的命令,甚至使用其中的 KeyGesture 实现 RelayCommand。

我会很感激你能给我的任何帮助。

4

1 回答 1

0

我在我的应用程序中使用了底层代码,它工作正常我的 xaml 代码看起来像

 <KeyBinding Command="{Binding ExitCommand}"

                    Key="{Binding ExitCommand.GestureKey}"

                    Modifiers="{Binding ExitCommand.GestureModifier}"/>

在我的视图模型中 k public ICommand ExitCommand

    {

        get

        {

            if (exitCommand == null)

            {

                exitCommand = new DelegateCommand(Exit);

                exitCommand.GestureKey = Key.X;

                exitCommand.GestureModifier = ModifierKeys.Control;

                exitCommand.MouseGesture = MouseAction.LeftDoubleClick;

            }

            return exitCommand;

        }

    }
 private void Exit()
    {
        Application.Current.Shutdown();
    }
于 2012-10-03T17:28:50.917 回答