2009-11-03 10 views
3

Si je comprends bien, un panneau ne doit pas comporter de «chrome» visible. StackPanel, Grid et Canvas n'ont aucun élément visible (à l'exception du quadrillage, qui, selon eux, ne sert qu'à déboguer la mise en page.)Ajout d'éléments visibles à un panneau personnalisé dans Silverlight 3

Dans mon exemple, je vais créer un panneau personnalisé qui utilise Attached. Propriétés pour disposer ses contrôles enfants. Cependant, je veux que mon panneau personnalisé présente une sorte de "grille" visible en arrière-plan. L'aspect de la grille (dimensionnement et positionnement) dépendra de la taille et de la position des éléments enfants.

Quelles sont certaines des façons d'y parvenir? Étant tout nouveau pour Silverlight et XAML en général, ma première idée était de créer un contrôle personnalisé qui inclut mon panneau personnalisé pour la mise en page.

Je pense que je serai en mesure de comprendre le code spécifique, mais je dois être pointé dans la bonne direction en termes de blocs de construction sont appropriés pour ce scénario.

Répondre

2

Vous avez raison de dire que les panneaux personnalisés ne peuvent pas afficher de chrome supplémentaire; ils peuvent seulement afficher leurs enfants (la grille étant une exception).

Pour faire ce que vous voulez faire, vous pouvez créer un panneau personnalisé qui ajoute juste des enfants supplémentaires pour afficher le chrome. Ce ne serait pas un bon design (puisque les utilisateurs du Panel verront ces éléments supplémentaires dans la collection Children). La meilleure idée est de faire ce que vous avez dit: créer un contrôle personnalisé qui expose une propriété enfants. Ce contrôle peut utiliser en interne un panneau personnalisé privé pour disposer ces éléments (par exemple, TabControl utilise un TabPanel spécial pour la disposition des onglets). Dans le modèle par défaut Controls, vous pouvez utiliser TemplateBinding sur la propriété Children des panneaux pour la propriété Children's Control.

Questions connexes