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