动态添加KeyBindings到按钮

时间:2013-09-27 10:09:06

标签: c# wpf mvvm key-bindings

正如您在this question上看到的,我需要动态按钮。现在我需要为这些按钮添加一些KeyBinding。快捷方式以字符串形式存储在我的Product类中。 我尝试使用ListBox / ListView,就像我用来创建按钮一样,但我不能在那里添加KeyBindings。

实施例: 按钮绑定到对象“可乐”,其中“C”是快捷方式。如果单击此按钮,将执行OrderCommand命令,并将绑定对象用作其参数。如果我按“C”,这同样适用。

另外我需要它与dupes一起使用,假设我有两个产品的快捷键“C”,如果我按下“C”而没有按下第一个按钮。按“C”将在这两个按钮之间切换,如果按Enter键,将执行Command

2 个答案:

答案 0 :(得分:1)

您可以在列表控件中重新设置按钮以设置其InputBindings

<ListBox ItemsSource={Binding Buttons}>
    <ListBox.Resources>
         <Style x:Key="{x:Type Button}" BasedOn="{x:Type Button}">
              <Setter Property="Button.InputBindings"/>
                   <Setter.Value>
                        <KeyBinding Key="C" Command="{Binding OrderCommand}" />     
                   </Setter.Value>
              </Setter>
         </Style>
    </ListBox.Resources>
</ListBox>

答案 1 :(得分:0)

你必须在DataContext中为命令定义Keybinding,你可以这样做:

<Window.InputBindings>
  <KeyBinding Key="C" Command="{Binding OrderCommand}" />
</Window.InputBindings>