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