2010-11-01 6 views
5

Je souhaite ajouter une zone de dépôt au DataGrid WPF existant, au-dessus des en-têtes de colonnes. Dans cette zone, je souhaite autoriser l'utilisateur à supprimer les en-têtes de colonne représentant les colonnes à regrouper et à dissocier ces colonnes en les supprimant de cette zone. Xceed, SyncFusion et d'autres grilles commerciales offrent cette fonctionnalité, mais je dois le faire moi-même.Regroupement par glisser-déposer dans WPF DataGrid

Mon approche consistait à extraire le ControlTemplate du DataGrid, en le modifiant selon mes besoins, puis en créant un nouveau contrôle dérivé de DataGrid qui définit ce ControlTemplate dans son fichier generic.xaml. Pour l'essentiel, cela fonctionne, mais il doit y avoir une meilleure solution, n'est-ce pas?

Je cherchais une approche qui utilisait des propriétés attachées mais ne voyais pas comment insérer la nouvelle zone "drop" dans l'arborescence Visual du contrôle existant.

Toutes les suggestions sont les bienvenues. Merci!

Répondre

0

Vous pouvez écrire un contrôle contenant un objet DataGrid et remplacer son ControlTemplate, ou simplement le remplacer à l'endroit où vous l'utilisez, si vous ne l'utilisez qu'au même endroit. Cependant, encapsuler le DataGrid au lieu d'en hériter ne ferait pas tellement de différence.