C# 如何防止在WPF数据网格中取消选择?
我希望在任何给定的时刻在数据网格中选择某一行。我不希望它允许取消选择。如何实现这一点?XAMLC# 如何防止在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
<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];
});
}
}