我有一个基于WPF 4桌面的应用程序。在这个应用程序的一个窗口中,我有一个带有数据的DataGrid
,它与SQL Server数据库绑定(通过ADO.NET实体框架)。为了操作数据,我有一个删除按钮,它从DataGrid
中删除选定的行,并调用SaveChanges()
方法。
现在我想添加对键盘操作的支持,例如,我想让用户通过选择并单击Delete keyboard按钮来删除该行。
如果我在XAML窗口中设置CanUserDeleteRows="True"
,它会删除选定行,但不会提交到数据库,换句话说,它不会调用SaveChanges()
方法。
我尝试将keyDown
事件处理程序添加到DataGrid
,检查if (e.Key == Key.Delete)
,因此运行删除选定行的remove方法并调用SaveChanges()
方法,但它不起作用。
如何将键盘事件处理程序添加到DataGrid
?
目的是能够删除所选行并调用SaveChanges()
方法或仅运行我自己的方法,该方法处理从DataGrid
中删除行并提交到DB。
当然,如果你有什么别的想法,跟我的问题有关,随时提出来。
4条答案
按热度按时间lnvxswe21#
您尝试过PreviewKeyDown事件吗?类似于以下内容
dced5bon2#
或者,您可以使用CommandManager,它仅在选定行时删除该行(如果单元格正在编辑,则会备份)。
将其放在Datagrid所在的窗口中。
6rqinv9w3#
与Ben的方法相同,但只需将CanUserDeleteRows属性设置为
true
以启用该属性,删除按钮将激活删除。如下图
XAML
为DataGrid
:muk1a3rh4#
我看到您设法继续,但这可能对在搜索结果中看到此帖子的其他人有用。您需要重写DataGrid的OnCanExecuteDelete方法,如下所示:
但这只是用于操作纯图形。对于保存到数据库或其他操作,请使用数据网格的数据源。