单击"删除"键按钮删除DataGrid行(WPF)

Mik*_* B. 4 c# keyboard wpf xaml datagrid

我有基于桌面的WPF 4应用程序.在这个应用程序的一个窗口中,我有DataGrid数据,与SQL Server数据库绑定(通过ADO.NET实体框架).为了操作数据,我有一个删除按钮,删除选定的行DataGrid和调用SaveChanges()方法.

现在我想添加对键盘操作的支持,例如我想让用户通过选择并单击Delete keyboard按钮来删除该行.

如果我CanUserDeleteRows="True"在窗口XAML中设置,它会删除所选行,但不会提交数据库,换句话说,它不会调用SaveChanges()方法.

我试图将keyDown事件处理程序添加到DataGrid检查中if (e.Key == Key.Delete),因此运行删除所选行和调用SaveChanges()方法的remove 方法,但它不起作用.

我的问题是如何添加键盘事件处理程序DataGrid将删除选定的行和调用SaveChanges()方法或只运行我自己的方法,处理行删除DataGrid和提交DB.

当然,如果您对我的问题有任何其他想法,请随时提出建议.

Fre*_*lad 9

您是否尝试过使用PreviewKeyDown事件?像这样的东西

<DataGrid x:Name="dataGrid" PreviewKeyDown="dataGrid_PreviewKeyDown">

private void dataGrid_PreviewKeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Delete)
    {
        var dataGrid = (DataGrid)sender;
        // dataGrid.SelectedItems will be deleted...
        //...
    }
}
Run Code Online (Sandbox Code Playgroud)