[英]C# WPF Same Command for Multiple events
我在 C# 中有一个 WPF 应用程序,它遵循 MVVM 模式。 我在 xaml 中编写了以下代码,用于调用命令的数据网格中的双击事件。
<DataGrid.InputBindings>
<MouseBinding Gesture="LeftDoubleClick"
Command="{Binding LoadDetailGridCommand}">
<MouseBinding.CommandParameter>
<MultiBinding Converter="{StaticResource Converter}">
<Binding ElementName="dgInvDetails" Path="SelectedItem"/>
<Binding ElementName="dgInvDetails" Path="CurrentColumn"/>
</MultiBinding>
</MouseBinding.CommandParameter>
</MouseBinding>
</DataGrid.InputBindings>
我希望在按下 Enter 键时触发相同的操作。 我是否必须对KeyBinding
使用相同的代码并为相同的命令设置Enter
键,或者有没有更好的方法来做到这一点?
提前致谢!
您需要为输入键指定键绑定。
试试下面
<DataGrid>
<DataGrid.InputBindings>
<KeyBinding Command="{Binding LoadDetailGridCommand}" Key="Enter" >
<KeyBinding.CommandParameter>
<MultiBinding Converter="{StaticResource Converter}">
<Binding ElementName="dgInvDetails" Path="SelectedItem"/>
<Binding ElementName="dgInvDetails" Path="CurrentColumn"/>
</MultiBinding>
</KeyBinding.CommandParameter>
</KeyBinding>
</DataGrid.InputBindings>
</DataGrid>
如果要重用绑定,可以将其定义为资源:
<Window.Resources>
<local:MultiConverter x:Key="Converter" />
<MultiBinding x:Key="binding" Converter="{StaticResource Converter}">
<Binding ElementName="dgInvDetails" Path="SelectedItem"/>
<Binding ElementName="dgInvDetails" Path="CurrentColumn"/>
</MultiBinding>
</Window.Resources>
...然后使用自定义标记扩展来引用它:
<DataGrid.InputBindings>
<KeyBinding Key="Return" Command="{Binding LoadDetailGridCommand}"
CommandParameter="{local:BindingResourceExtension binding}" />
<MouseBinding Gesture="LeftDoubleClick" Command="{Binding LoadDetailGridCommand}"
CommandParameter="{local:BindingResourceExtension binding}" />
</DataGrid.InputBindings>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.