2012-03-01 64 views

回答

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]; 
     }); 
    } 
} 
+0

我还没有'e.AddedItems.Count == 0'但是当我使用'e.RemovedItems.Count> 0'它产生尝试一个无限循环和一个StackOverflowException – 2012-03-01 17:56:13

+1

我期望,因为设置SelectedItem触发选择更改事件,并且不确定没有选择(即e.AddedItems.Count == 0),该分配将触发处理程序无限期。 – 2012-03-01 18:11:27

+0

添加'e.AddedItems.Count == 0'时会发生什么?它工作吗? – 2012-03-01 18:11:54