2010-10-18 4 views
2

Puis-je créer un modèle de contrôle paramétré, c'est-à-dire créer un modèle de contrôle pouvant contenir différents contrôles. Par exemple, je peux utiliser le modèle de contrôle avec l'étiquette ou avec le bouton - tout ce que je veux dans une certaine position. Je ne me sens pas heureux d'écrire les mêmes modèles de contrôle qui ont seulement une chaîne différente dans leur code. Ou, peut-être, je me méprends mal et une autre façon d'éviter le passé existe.Comment réutiliser le modèle de contrôle?

Répondre

4

Ce que vous décrivez est ContentControl. C'est la classe de base pour de nombreux contrôles courants, y compris Button, Label, ListBoxItem ...

L'idée d'un ContentControl est qu'il peut définir sa propre mise en page et certains éléments de l'interface utilisateur et également inclure un espace réservé où ce qui est défini comme son La propriété de contenu peut être injectée. Il y a aussi un HeaderedContentControl qui permet 2 espaces réservés pour un autre contenu.

<ControlTemplate x:Key="MessageCTemplate" TargetType="{x:Type ContentControl}"> 
<Grid …> 
    <Rectangle …/> 
    <Rectangle …/> 
    <Rectangle …/> 
    <ContentPresenter/> <!-- This is where the content shows up --> 
<Grid/> 
</ControlTemplate> 

<Button Template="{StaticResource MessageCTemplate}"> 
    <Label Content="My label"/> 
</Button> 

<Button Template="{StaticResource MessageCTemplate}"> 
    <Ellipse Fill="Orange" Width="100" Height="30"/> 
</Button> 
Questions connexes