WPF Datagrid - 在DataGrid中单击空格时取消选择所选项

NoP*_*God 10 c# wpf datagrid

默认行为是使用CTRL +单击以取消选择数据网格中的项目

我希望能够鼠标单击(左或右按钮)网格中的空白,并取消选择任何选定的项目.

我用谷歌搜索了它,发现了一些非常复杂的变通方法,但我希望有一个简单的解决方案.

编辑:

我现在正在使用listview,但仍未找到解决方案.虽然因为它们的风格更好,但它对于列表视图稍微不那么烦人了.

小智 14

我有同样的问题并找到了解决方案.这应该建立在行为中:

private void dataGrid1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    if (sender != null)
    {
        DataGrid grid = sender as DataGrid;
        if (grid != null && grid.SelectedItems != null && grid.SelectedItems.Count == 1)
        {
            DataGridRow dgr = grid.ItemContainerGenerator.ContainerFromItem(grid.SelectedItem) as DataGridRow;
            if (!dgr.IsMouseOver)
            {
                (dgr as DataGridRow).IsSelected = false;
            }
         }
    }        
}
Run Code Online (Sandbox Code Playgroud)


LPL*_*LPL 3

一个简单的

<DataGrid MouseDown="DataGrid_MouseDown">
Run Code Online (Sandbox Code Playgroud)

是不是你想要的?

private void DataGrid_MouseDown(object sender, MouseButtonEventArgs e)
{
    (sender as DataGrid).SelectedItem = null;
}
Run Code Online (Sandbox Code Playgroud)

唯一的缺点是,在选定的项目上单击而不按住 CTRL 键也会取消选择。