动态地将键绑定添加到按钮

本文关键字:添加 按钮 绑定 动态 | 更新日期: 2023-09-27 18:32:58

正如你在这个问题上看到的,我需要动态按钮。现在我需要向这些按钮添加一些KeyBinding。快捷方式作为字符串存储在我的Product类中。我尝试使用ListBox/ListView,就像我用来创建按钮一样,但我无法在那里添加键绑定。

例:按钮绑定到对象"可乐",其中"C"是快捷方式。如果我单击此按钮,则会执行OrderCommand命令,并将我的绑定对象用作其参数。如果我按"C",同样应该有效。

我也需要它来处理欺骗,假设我有两个带有快捷方式"C"的产品,如果我按"C"而不是按下第一个按钮。按"C"将在这两个按钮之间切换,如果我按回车键,Command将被执行。

动态地将键绑定添加到按钮

可以重新设置列表控件内的按钮样式以设置其输入绑定

<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>

您必须在 DataContext 中为命令定义键绑定,您可以执行以下操作:

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