如何取消选择DataGrid单元格?

时间:2016-05-14 18:00:14

标签: c# wpf xaml

我在单元格编辑模式下使用DataGrid。我想取消选择当单击在单元格外时当前编辑的单元格(单击可以在另一个单元格,另一个控件,在窗口上,在其他网格上,在任何地方)。

我正在使用此代码,但仅在点击其他控件时才有效(例如,如果我点击窗口,则不会触发):

private void Grid_LostFocus(object sender, RoutedEventArgs e)
{
    ((DataGrid)sender).UnselectAllCells();
}

如何在点击外部的任何位置时取消选择DataGrid单元格?

3 个答案:

答案 0 :(得分:1)

您是否尝试过 MouseLeave 事件?它应该工作。

答案 1 :(得分:1)

谢谢你,vishakh369!根据你的答案,我找到了解决方案:

private void sequenceGrid1_MouseLeave(object sender, MouseEventArgs e)
    {
        PreviewMouseLeftButtonDown += mouseClick;
    }

    private void mouseClick(object sender, MouseEventArgs e)
    {
        HitTestResult hitTestResult;
        hitTestResult = VisualTreeHelper.HitTest(sequenceGrid1, e.GetPosition(sequenceGrid1));
        if (hitTestResult == null) // Click outside the datagrid
        {
            sequenceGrid1.CommitEdit(DataGridEditingUnit.Row, true);
            try
            {
                sequenceGrid1.Items.Refresh(); // Edit mode still open if there is invalid input
            }
            catch { }
        }
        PreviewMouseLeftButtonDown -= mouseClick;
    }
}

答案 2 :(得分:0)

你可以尝试这个答案wpf data grid selection