默认行为是使用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)
一个简单的
<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 键也会取消选择。