2010-11-22 4 views
1

J'utilise Silverlight 4 et j'ai un DataGrid qui permet aux utilisateurs de trier les lignes. Dans l'événement de colonne de tri, l'événement SelectionChanged est déclenché et la première ligne initiale de la grille de données est sélectionnée. Est-il de toute façon ne pas avoir déclenché l'événement SelectionChanged ou est là pour avoir un événement onSort pour définir l'élément selected à null?Silverlight 4 - Tri de Datagrid et édition de SelectionChanged

Répondre

2

Cela semble être un problème qui ne peut pas être facilement résolu en ajoutant une logique à l'événement SelectionChanged. Ce que je fais enlève tout le code de cet événement et le place dans l'événement MouseLeftUpButton de chaque rangée. Voici le code pour que ...

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

Ajout d'un gestionnaire de ligne ne fonctionne pas pour moi ... mais cela a fait:

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

Questions connexes