在WPF中没有命令的KeyBinding

问题描述 投票:1回答:2

我有一个简单的WPF应用程序,我想添加在Win32世界中被称为键盘加速器的东西。看起来KeyBinding是最合适的,但它需要绑定到一个Command对象。我没有使用命令对象,也不想使用。是否有其他方法可以让ctrl-x键序列被敲击时触发事件?

wpf key-bindings
2个回答

0
投票

我唯一能想到的理由就是为什么有人会... 如果你想使用命令对象,那么在他们的脑海中,命令对象是与视图模型相关联的,而他们希望他们的keybinding只在视图中工作。

事实上,如果你试图声明一个 ICommand 的观点中,竟然很难管理约束。KeyBinding 到它。

我在项目中就是这样解决这个问题的。

<Window x:Class="MyNamespace.MyView"
    (...)
    xmlns:local="clr-namespace:MyNameSpace"
    (...)
    <Grid>
        <Grid.InputBindings>
            <KeyBinding Key="R" Command="{Binding ReportCommand, 
                RelativeSource={RelativeSource AncestorType=local:MyView}}" />
    (...)

ReportCommand 是一个 ICommandMyView,而不是在ViewModel中。

© www.soinside.com 2019 - 2024. All rights reserved.