2009-06-04 11 views
0

Je souhaite personnaliser un contrôle tiers, tel que RadGridView de Telerik, en tant que contrôle autonome, par exemple en ajoutant des boutons Nouvelle ligne et Supprimer une ligne au-dessus de la grille tout en prenant en charge la manipulation XAML des internes du contrôle par la fenêtre sur laquelle mon contrôle existe (ie pour que la fenêtre ajoute son propre style à une colonne de la grille).Encapsulation et personnalisation d'un contrôle WPF tiers

Existe-t-il un moyen d'ajouter les boutons, etc. avec des modèles? Modes?

Ma "solution" actuelle est d'hériter de la RadGridView, mais je suis bloqué sur la façon d'ajouter les fonctionnalités dont j'ai besoin.

Merci!

Répondre

1

Ma suggestion est d'utiliser la composition sur l'héritage.

Vous pouvez créer votre propre contrôle (UserControl devrait faire le travail). Ensuite, vous pouvez définir la mise en page (peut être dans le panneau Grille): boutons en haut, RadGridView ci-dessous, etc. Pour le style de colonne personnalisé, vous pouvez utiliser DynamicResource astuce. Définissez les styles des colonnes que vous souhaitez modifier avec DynamicResource. De cette façon, lorsque le contrôle est ajouté à l'arbre logique (visuel); WPF va monter dans l'arbre de contrôle et trouver la ressource appropriée. De cette façon, dans chaque ressource fenêtre/page, vous pouvez définir la ressource différente.

Une autre idée qui me vient à l'esprit est que vous pouvez extraire les boutons séparément. La seule référence dont ils auront besoin sera RadGridView et vous pouvez utiliser la liaison avec le nom de l'élément pour le fournir.

1

Je passerais la route UserControl personnalisée au lieu de la route d'héritage. Le style et les thèmes fonctionnent étrangement quand vous faites affaire avec des sous-classes. Sauf si vous envisagez de dupliquer et de modifier les ControlTemplates et les DataTemplates de Telerik, cela peut devenir très poilu.