Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 动态地向按钮添加键绑定_C#_Wpf_Mvvm_Key Bindings - Fatal编程技术网

C# 动态地向按钮添加键绑定

C# 动态地向按钮添加键绑定,c#,wpf,mvvm,key-bindings,C#,Wpf,Mvvm,Key Bindings,如你所见,我需要动态按钮。现在我需要向这些按钮添加一些KeyBindings。快捷方式以字符串形式存储在myProduct类中。 我尝试使用列表框/列表视图,就像我用来创建按钮一样,但我无法在那里添加键绑定 例如: 按钮绑定到对象“Coke”,其中“C”是快捷方式。如果单击此按钮,将执行我的OrderCommand命令,并将我的绑定对象用作其参数。如果我按“C”键,也应该是一样的 我还需要它来处理复制品,比如说我有两个产品的快捷键是“C”,如果我按“C”,第一个按钮就不会被按下。按“C”键将在这

如你所见,我需要动态按钮。现在我需要向这些按钮添加一些
KeyBinding
s。快捷方式以字符串形式存储在my
Product
类中。 我尝试使用
列表框
/
列表视图
,就像我用来创建按钮一样,但我无法在那里添加键绑定

例如: 按钮绑定到对象“Coke”,其中“C”是快捷方式。如果单击此按钮,将执行我的
OrderCommand
命令,并将我的绑定对象用作其参数。如果我按“C”键,也应该是一样的


我还需要它来处理复制品,比如说我有两个产品的快捷键是“C”,如果我按“C”,第一个按钮就不会被按下。按“C”键将在这两个按钮之间切换,如果我按enter键,将执行
命令。

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

<Window.InputBindings>
  <KeyBinding Key="C" Command="{Binding OrderCommand}" />
</Window.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>


是否无法将
键绑定
绑定到按钮?我的按钮是对象,它们用作参数。我不知道我有多少个按钮(取决于数据库数据),也许10个按钮,也许只有3个。谢谢!我不知道按钮有
InputBindings
属性。但不幸的是,我还有一个问题:我必须先单击按钮,然后才能通过键执行命令。我的应用程序需要通过键盘进行完全控制,因此我需要在第一次按键时使用的键绑定。看来您的视图模型无论如何都知道按钮,因此,我会捕捉窗口上的按键,并从视图模型中将焦点设置在右键上。