2009-01-23 15 views
5

Je développe un contrôle personnalisé dérivé de System.Windows.Controls.ContentControl. Dans le modèle par défaut des contrôles (themes \ generic.xaml), j'utilise un élément Border qui enveloppe le contenu réel.Est-ce que Margin et Padding sont implémentés par ContentControl?

Est-ce que mon contrôle personnalisé implémente déjà marge et padding (ie, rétrécit la bordure selon le padding sur le contrôle personnalisé) ou fais/je peux décider moi-même, où la marge et le padding sont appliqués propriétés de remplissage sur l'élément de frontière à {TemplateBinding Margin} etc.

Merci à l'avance!

Répondre

8

marge est mis en œuvre, je crois que tout le long dans l'élément cadre. Cependant Rembourrage n'est pas. ContentControl a le « PaddingProperty », mais par défaut, il En fait, vous liez la propriété MarginProperty du contenu à la propriété Padding du contrôle de contenu

+0

J'ai fait quelques expériences entre-temps. (Ajouter des bordures colorées à tous les niveaux de la hiérarchie) et j'en suis arrivé à la même conclusion. Merci quand même! –

0

J'ai résolu le problème en définissant un style pour ContentControl et en liant le remplissage à la marge du ContentPresenter défini dans le modèle.

<Style TargetType="{x:Type ContentControl}"> 
    <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type ContentControl}">       
        <ContentPresenter Margin="{TemplateBinding Padding}"/>         
       </ControlTemplate> 
      </Setter.Value> 
    </Setter> 
</Style> 

Peut-être que cela aide les autres.