1

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

我试图通过以下方式做到这一点:

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

但这失败了。当我添加Modifiers="Shift"属性时它确实有效。

让它为 Del 键工作的唯一方法似乎是订阅 DataGrid 的 KeyDown 事件。但是是否可以将我的自定义命令直接绑定到 Del 键?

4

2 回答 2

1

我想您可以禁用删除,DataGrid因为您正在Command通过自己处理逻辑KeyBinding

<DataGrid CanUserDeleteRows="False"  ....../> 

编辑:

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

<DataGrid.CommandBindings>
    <CommandBinding Command="DataGrid.DeleteCommand" Executed="CommandBinding_Executed"/>
</DataGrid.CommandBindings>
于 2013-07-26T08:32:56.230 回答
0

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

于 2013-07-26T11:44:30.110 回答