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