2009-08-18 5 views
0

J'ai essayé de trouver un moyen de regrouper des éléments dans DataGrid dans le code-behind. Mon DataGrid est rempli de code-behind à partir d'une collection de liste d'objets personnalisés, ce que je voulais est de diviser ces objets dans les groupes. MerciWPF DataGrid - Groupe Éléments dans le code-behind C#

Répondre

0

Vous pouvez lier le DataGrid à un CollectionView créé à partir de votre liste d'objets. Le CollectionView prend en charge le regroupement. Ce n'est pas vraiment une solution de code-behind, mais il est très facile à utiliser.

+0

Je sais comment cela peut être fait du point de vue xaml, dans mon cas, cela ne fonctionnera pas car je construis un contrôle personnalisé qui s'étend à la classe DataGrid pour styliser et organiser les données et les fonctionnalités requises. – Wizir

+0

'DataGrid' utilise' ICollectionView' et 'CollectionView' implémente cette interface. Peut-être que vous pouvez vous inspirer des interactions entre 'DataGrid' et' ICollectionView'? Vous pouvez implémenter votre solution en implémentant votre propre ICollectionView sur votre collection d'objets. –

1

Vous devez utiliser CollectionView, mais le type de base CollectionView ne prend pas en charge le regroupement.

Pour obtenir le regroupement de travailler dans le code que vous devez utiliser l'un des types derrived de CollectionView qui implémente le regroupement tels que:

  • ListCollectionView
  • BindingListCollectionView

Vous utilisez quelque chose comme ça :

ListCollectionView lcv = new ListCollectionView(myCollection); 
lcv.GroupDescriptions.Add(new PropertyGroupDescription("PropertyNameToGroupBy")); 
MyDataGrid.ItemsSource = lcv; 

Normalement quand Si vous définissez une collection directement dans ItemSource, WPF créera automatiquement une CollectionView pour vous sous les couvertures.

Bea Stollnitz parle beaucoup de CollectionViews on her blog si vous voulez plus d'informations.