Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Silverlight 4-Datagrid排序和选择已更改问题_Silverlight_Silverlight 4.0 - Fatal编程技术网

Silverlight 4-Datagrid排序和选择已更改问题

Silverlight 4-Datagrid排序和选择已更改问题,silverlight,silverlight-4.0,Silverlight,Silverlight 4.0,我使用的是Silverlight 4,有一个datagrid,允许用户对行进行排序。在sort column事件中,将触发SelectionChanged事件,并选择datagrid中的初始第一行。是否仍有不触发SelectionChanged事件的情况,或者是否有onSort事件将selectedItem设置为null的情况?这似乎是一个无法通过向SelectionChanged事件添加逻辑轻松解决的问题。我正在做的是从该事件中删除所有代码,并将其放入每行的MouseLeftUpButton事

我使用的是Silverlight 4,有一个datagrid,允许用户对行进行排序。在sort column事件中,将触发SelectionChanged事件,并选择datagrid中的初始第一行。是否仍有不触发SelectionChanged事件的情况,或者是否有onSort事件将selectedItem设置为null的情况?

这似乎是一个无法通过向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

添加行处理程序对我不起作用。。。但这确实:

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
   }