2012-03-01 61 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