Silverlight 4 - Datagrid排序和SelectionChanged问题

时间:2010-11-22 17:42:16

标签: silverlight silverlight-4.0

我正在使用Silverlight 4并且有一个允许用户对行进行排序的数据网格。在sort列事件中,将触发SelectionChanged事件,并选择数据网格中的第一行。无论如何都没有触发SelectionChanged事件,或者有没有onSort事件将selectedItem设置为null?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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