我在单元格编辑模式下使用DataGrid。我想取消选择当单击在单元格外时当前编辑的单元格(单击可以在另一个单元格,另一个控件,在窗口上,在其他网格上,在任何地方)。
我正在使用此代码,但仅在点击其他控件时才有效(例如,如果我点击窗口,则不会触发):
private void Grid_LostFocus(object sender, RoutedEventArgs e)
{
((DataGrid)sender).UnselectAllCells();
}
如何在点击外部的任何位置时取消选择DataGrid单元格?
答案 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