是否可以将与内置命令关联的键与我自己的命令相关联?

时间:2013-07-26 08:17:42

标签: wpf datagrid command

WPF DataGrid有一个由Del键触发的内置Delete命令。但是,我编写了自己的命令实现,该命令从DataGrid中删除行并更新基础模型。我仍然希望这个自定义命令由Del键触发。

我试图通过以下方式实现这一目标:

 <Grid.InputBindings>
    <KeyBinding Command="{Binding MyOwnDeleteCommand}"
                CommandParameter="{Binding ElementName=myDataGrid,Path= SelectedItems}"
                Key="Delete"/>
 </Grid.InputBindings>

但这失败了。添加Modifiers="Shift"属性时,它会起作用。

使用Del键的唯一方法是订阅DataGrid的KeyDown事件。但是可以直接将我的自定义命令绑定到Del键吗?

2 个答案:

答案 0 :(得分:1)

我想您可以在DataGrid上停用删除功能,因为您通过Command

处理自己KeyBinding中的逻辑
<DataGrid CanUserDeleteRows="False"  ....../> 

编辑:

不确定使用RoutedCommand是否适合您的模式,但您可以从DataGrid路由命令并在那里处理您的逻辑。

<DataGrid.CommandBindings>
    <CommandBinding Command="DataGrid.DeleteCommand" Executed="CommandBinding_Executed"/>
</DataGrid.CommandBindings>

答案 1 :(得分:0)

解决方案非常简单:只需在Datagrid上重复UserControl的Keybinding即可! 我还发现您可以将Keybinding设置为'ApplicationCommands.NotACommand以禁用Control中内置的手势。