有两种情况:
您选择一行并按删除键删除行。
您选择一个单元格,当其文本突出显示时,按删除键删除文本。
我如何区分这两者?在这两种情况下我都会捕获PreviewKeyPress并且Key是Delete Key,所选行是相同的。
答案 0 :(得分:8)
要识别按键来源,请在e.OriginalSource
中捕获PreviewKeyPress(..)
并检查对DataGridRow
或DatagridCell
的投射是否成功。
DataGrid
具有IsReadOnly
属性。
答案 1 :(得分:0)
也许可以查看选定的DataGridCell
IsEditing
property?我假设,如果您选择了整行,则会选择 no 单元格,或者IsEditing在所选单元格上将为false(因为我不相信您可以在多个时编辑单元格被选中)。
如果在选择一行时,它自动选择第一列中的单元格并将其置于编辑模式,则此方法可能不起作用......但此刻我无法测试。
答案 2 :(得分:0)
在DataGrid的OnPreviewKeyDown中:
if ((this.CurrentItem as DataRowView).IsEdit == false && ...)
{
// the row is in view mode
}