Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何确定wpf datagrid单元是否处于编辑模式?_C#_.net_Wpf_Mvvm - Fatal编程技术网

C# 如何确定wpf datagrid单元是否处于编辑模式?

C# 如何确定wpf datagrid单元是否处于编辑模式?,c#,.net,wpf,mvvm,C#,.net,Wpf,Mvvm,有两种情况: 选择一行,然后按delete键删除该行 选择一个单元格,当其文本高亮显示时,按delete键删除文本 我如何区分这两者?在这两种情况下,我捕获PreviewKeyPress,并且键是Delete键,选定的行是相同的 检查所选的DataGridCell?我假设,如果您选择了整行,则可能没有选定的单元格,或者选定单元格上的IsEdit将为false(因为我不相信您可以在选择多个单元格时编辑单元格) 如果在选择行时,它自动选择(例如)第一列中的单元格并将其置于编辑模式,则此方法可能不起作

有两种情况:

  • 选择一行,然后按delete键删除该行

  • 选择一个单元格,当其文本高亮显示时,按delete键删除文本


  • 我如何区分这两者?在这两种情况下,我捕获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的情况下可能得到的。很高兴它帮了我很多,这是一件很基本的事情,但也很有成效