【发布时间】:2018-01-10 15:51:07
【问题描述】:
<Window.InputBindings>
<KeyBinding Key="0" Command="{Binding ZeroCommand}"/>
<KeyBinding Key="1" Command="{Binding OneCommand}"/>
<KeyBinding Key="2" Command="{Binding TwoCommand}"/>
<KeyBinding Key="3" Command="{Binding ThreeCommand}"/>
<KeyBinding Key="4" Command="{Binding FourCommand}"/>
<KeyBinding Key="5" Command="{Binding FiveCommand}"/>
<KeyBinding Key="6" Command="{Binding SixCommand}"/>
<KeyBinding Key="7" Command="{Binding SevenCommand}"/>
<KeyBinding Key="8" Command="{Binding EightCommand}"/>
<KeyBinding Key="9" Command="{Binding NienCommand}"/>
<KeyBinding Key="OemPlus" Command="{Binding PlusCommand}"/>
<KeyBinding Key="OemMinus" Command="{Binding MinusCommand}"/>
<KeyBinding Key="OemBackslash" Command="{Binding DevideCommand}"/>
<KeyBinding Key="Multiply" Command="{Binding MultiplyCommand}"/>
<KeyBinding Key="Return" Command="{Binding EqualsCommand}"/>
</Window.InputBindings>
当我遇到这个问题时,我正在创建一个基本的计算器应用程序。我收到编译错误“0”不能用作“键”的值。数字不是有效的枚举值。事实上 OemMinus 是唯一被绑定的命令。
我认为可以通过创建一个带有单例的 InputBindingConfiguration 类来解决这个问题,在那里定义键并绑定到这些键,但我想知道是否有一种纯粹在 Xaml 中执行此操作的方法?
【问题讨论】:
-
您需要为
Key属性提供一个有效值。有效值是System.Windows.Input.Key 枚举类型的枚举值的名称。所以你有例如"0",您需要使用"D0"。请参阅文档以了解其余有效的值名称。 -
我个人觉得这个问题非常相关 - 当我提供键值时,我很惊讶 WPF 自动完成提供纯数字选项,我认为这是通过值转换器完成的。显然它只接受数字键的
D-值。