繁体   English   中英

C# WPF 多个事件的相同命令

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM