2010-11-22 21 views
1

私はSilverlight 4を使用しており、ユーザーが行を並べ替えることができるDataGridを持っています。ソート列イベントでは、SelectionChangedイベントが発生し、データグリッドの最初の最初の行が選択されます。とにかく、SelectionChangedイベントが発生しなかったり、selectedItemをnullに設定するonSortイベントがあるとしますか?Silverlight 4 - DatagridソートとSelectionChangedの問題

答えて

2

これは、SelectionChangedイベントにロジックを追加することで簡単には解決できない問題のようです。私がやっていることは、このイベントからすべてのコードを削除し、各行のMouseLeftUpButtonイベントに配置することです。ここではそのためのコード...私のために動作しませんでした行のハンドラを追加

Private Sub dgrd_LoadingRow(ByVal sender As Object, ByVal e As System.Windows.Controls.DataGridRowEventArgs)  
     AddHandler e.Row.MouseLeftButtonUp, AddressOf ClientGrid_SelectRow 
    End Sub 

    Private Sub ClientGrid_SelectRow(ByVal sender As Object, ByVal e As MouseEventArgs) 
     Dim SelectedRow As DataGridRow = CType(sender, DataGridRow) 

     //SelectedRow.DataContext is equivlent to e.AddedItems(0) in the SelectionChanged Event 

     //Add the SelectionChanged logic here 

    End Sub 
0

がある...しかし、これはやった:

private bool _binding = false; 
private void data_grid_LoadingRow(object sender, DataGridRowEventArgs e) 
    { 
     _binding = true; 
    } 
private void data_grid_SelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 
     if (_binding) 
     { 
      data_grid.SelectedItem = null; 
      _binding = false; 
     } 
     if (data_grid.SelectedItem==null) return; 
     // do something with selected item 
    } 

Thanks to jasonxz found here http://forums.silverlight.net/p/18215/61135.aspx

関連する問題