2009-12-07 4 views
2

J'utilise PagedCollectionView dans Silverlight 3 pour regrouper des éléments dans une grille de données. Je veux détecter quand les en-têtes de groupe sont cliqués mais après 6 heures ne peux toujours pas trouver n'importe quel moyen de faire ceci.Silverlight 3 DataGrid Grouping - Détection d'en-tête de groupe Cliquez ou en-tête Développer/Réduire

(De sorte que quand un en-tête effondré est cliqué, je peux charger dynamiquement le contenu du groupe)

Le DataGrid est rempli comme ceci:

collection PagedCollectionView = new PagedCollectionView (orgMembers); collection.GroupDescriptions.Add (new PropertyGroupDescription ("Génération"));

DataGrid1.ItemsSource = collection;

Répondre

4

écrire une méthode d'extension pour trouver un élément parent d'un type spécifique:

public static T FindParentOfType<T>(this FrameworkElement element) 
    { 
     var parent = VisualTreeHelper.GetParent(element) as FrameworkElement; 

     while (parent != null) 
     { 
      if (parent is T) 
       return (T)(object)parent; 

      parent = VisualTreeHelper.GetParent(parent) as FrameworkElement; 
     } 
     return default(T); 
    } 

gérer l'événement MouseLeftButtonUp sur la grille de données:

private void PassportGrid_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) 
    { 

     DataGridRowGroupHeader rgh = (e.OriginalSource as FrameworkElement).FindParentOfType<DataGridRowGroupHeader>(); 
     if (rgh != null && rgh.DataContext is CollectionViewGroup) 
     { 
      var stuff = (rgh.DataContext as CollectionViewGroup); 
      var items = stuff.Items; 
     } 
    } 

vous pouvez obtenir des informations sur le groupe qui a été cliqué et sa collection d'objets (montrée ci-dessus)

Questions connexes