如何防止 WPF DataGrid 中的取消选择?

3

我希望在DataGrid中随时选择某一行。我不想允许取消选择。如何实现?

1个回答

3

XAML

<DataGrid SelectionMode="Single" SelectionChanged="DataGrid_SelectionChanged">
    ...           
</DataGrid>

C#

private void DataGrid_SelectionChanged(
    object sender,
    SelectionChangedEventArgs e)
{
    DataGrid g = sender as DataGrid;
    if (g != null &&
        e.AddedItems.Count == 0 &&
        e.RemovedItems.Count > 0)
    {
        this.Dispatcher.BeginInvoke((ThreadStart)delegate
        {
            g.SelectedItem = (Device)e.RemovedItems[0];
        });
    }
}

我还没有尝试过 e.AddedItems.Count == 0,但是当我使用 e.RemovedItems.Count > 0 时,它会产生一个无限循环和 StackOverflowException 异常。 - Jader Dias
1
我认为这是因为设置SelectedItem会触发选择更改事件,如果不确定已经有没有选择(即e.AddedItems.Count == 0),那么赋值将无限触发处理程序。 - Damon Warren
当您添加 e.AddedItems.Count == 0 时会发生什么?它能正常工作吗? - Damon Warren
它与 e.AddedItems.Count == 0this.Dispatcher.BeginInvoke 一起工作。 - Jader Dias

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接