2012-03-01 371 views
3

私はいつでも、DataGridでいくつかの行が選択されることを望みます。私はそれが選択を許さないようにしたい。それを達成する方法?私は `e.RemovedItems.Countを使用する場合、私は` e.AddedItems.Count == 0 'と試みたが、していないWPF DataGridの選択解除を防ぐには?

答えて

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

> 0'それがもたらし無限ループとStackOverflowException –

+1

私は、SelectedItemを設定すると、選択されたイベントがトリガされ、まだ選択されていないことを確認することなく(つまり、 'e.AddedItems.Count == 0')無期限に。 –

+0

'e.AddedItems.Count == 0'を追加するとどうなりますか?それは動作しますか? –

関連する問題