2010-11-22 83 views
1

我使用Silverlight 4并有一个允许用户对行进行排序的数据网格。在排序列事件中,SelectionChanged事件被触发,并且数据网格中的第一行被选中。反正有没有SelectionChanged事件触发或是有一个onSort事件将selectedItem设置为null?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