首页 > 解决方案 > 如何在数据网格中禁用取消选择

问题描述

我有一个带有SelectionMode = "single" 的数据网格,但是当我按 'ctrl' 并选择选定的行时,它变成了未选中的。有一种方法可以禁用“ctrl”命令或使其在按下时不会取消选择选定的行?

我正在使用WPFMVVM模式。

我试过了

PreviewMouseLeftButtonDown="DataGrid_PreviewMouseLeftButtonDown"

并像这样处理它但没有用:

private void DataGrid_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {

 e.handled = true;

    }

`

标签: c#wpfxamlmvvmdatagrid

解决方案


这里的答案表明,不仅仅是设置Handled为真。也可能会有所帮助。

两者结合的结果可能如下所示:

void DataGridPreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    e.Handled = true;

    var result = VisualTreeHelper.HitTest(gd, e.GetPosition(gd));
    var row = DependencyObjectHelper.FindAncestor<DataGridRow>(result.VisualHit);
    if (row != null && !row.IsSelected)
        row.IsSelected = true;
}

我建议您仔细研究现有的问题和答案,并将它们结合起来完成您想做的事情。


推荐阅读