C# 如何防止在WPF数据网格中取消选择?

C# 如何防止在WPF数据网格中取消选择?,c#,.net,wpf,datagrid,selection,C#,.net,Wpf,Datagrid,Selection,我希望在任何给定的时刻在数据网格中选择某一行。我不希望它允许取消选择。如何实现这一点?XAML <DataGrid SelectionMode="Single" SelectionChanged="DataGrid_SelectionChanged"> ... </DataGrid> 我没有尝试使用e.AddedItems.Count==0,但是当我使用e.RemovedItems.Count>0时,它会产生一个无限循环和StackOver

我希望在任何给定的时刻在数据网格中选择某一行。我不希望它允许取消选择。如何实现这一点?

XAML

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

我没有尝试使用
e.AddedItems.Count==0
,但是当我使用
e.RemovedItems.Count>0
时,它会产生一个无限循环和StackOverflowException,因为设置SelectedItem会触发selection changed事件,并且不会确保还没有选择(即
e.AddedItems.Count==0
)赋值将无限期地触发处理程序。当添加
e.AddedItems.Count==0
时会发生什么?它工作吗?它与
e.AddedItems.Count==0
this.Dispatcher.BeginInvoke
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];
        });
    }
}