C# 如何确定wpf datagrid单元是否处于编辑模式?
有两种情况:C# 如何确定wpf datagrid单元是否处于编辑模式?,c#,.net,wpf,mvvm,C#,.net,Wpf,Mvvm,有两种情况: 选择一行,然后按delete键删除该行 选择一个单元格,当其文本高亮显示时,按delete键删除文本 我如何区分这两者?在这两种情况下,我捕获PreviewKeyPress,并且键是Delete键,选定的行是相同的 检查所选的DataGridCell?我假设,如果您选择了整行,则可能没有选定的单元格,或者选定单元格上的IsEdit将为false(因为我不相信您可以在选择多个单元格时编辑单元格) 如果在选择行时,它自动选择(例如)第一列中的单元格并将其置于编辑模式,则此方法可能不起作
我如何区分这两者?在这两种情况下,我捕获PreviewKeyPress,并且键是Delete键,选定的行是相同的 检查所选的
DataGridCell
?我假设,如果您选择了整行,则可能没有选定的单元格,或者选定单元格上的IsEdit将为false(因为我不相信您可以在选择多个单元格时编辑单元格)
如果在选择行时,它自动选择(例如)第一列中的单元格并将其置于编辑模式,则此方法可能不起作用。。。但是我现在不能测试它。检查所选的
DataGridCell
,也许?我假设,如果您选择了整行,则可能没有选定的单元格,或者选定单元格上的IsEdit将为false(因为我不相信您可以在选择多个单元格时编辑单元格)
如果在选择行时,它自动选择(例如)第一列中的单元格并将其置于编辑模式,则此方法可能不起作用。。。但我目前无法测试。要识别按键的来源,请在
PreviewKeyPress(…)
中捕获e.OriginalSource
,并检查转换到DataGridRow
或DatagridCell
是否成功
DataGrid
具有IsReadOnly
属性。要识别按键的来源,请在PreviewKeyPress(…)
中捕获e.OriginalSource
,并检查转换到DataGridRow
或DatagridCell
是否成功
DataGrid
具有IsReadOnly
属性。在DataGrid的OnPreviewKeyDown中:
if ((this.CurrentItem as DataRowView).IsEdit == false && ...)
{
// the row is in view mode
}
在DataGrid的OnPreviewKeyDown中:
if ((this.CurrentItem as DataRowView).IsEdit == false && ...)
{
// the row is in view mode
}
您是否使用类似于
{Binding Path=something,Mode=TwoWay}
?((System.Windows.RoutedEventArgs)(e))。原始源是System.Windows.Controls.DataGridCell是我选中的。它起作用了。在另一种情况下,它是TextBox(DataGridTextColumn的项目呈现器)是的,TextBox是我怀疑在模板列或textcolumn的情况下可能得到的。很高兴它帮了我很大的忙。vao它帮了我很多忙,这是一件基本的事情,但却很有成效。您是否使用了类似于{Binding Path=something,Mode=TwoWay}
?((System.Windows.RoutedEventArgs)(e))。原始源是System.Windows.Controls.DataGridCell是我检查的。它起作用了。在另一种情况下,它是TextBox(DataGridTextColumn的项目呈现器)是的,TextBox是我怀疑在模板列或textcolumn的情况下可能得到的。很高兴它帮了我很多,这是一件很基本的事情,但也很有成效