2009-01-23 12 views
5

Ich entwickle ein benutzerdefiniertes Steuerelement, das von System.Windows.Controls.ContentControl abgeleitet wird. In der Standardvorlage für Steuerelemente (themes \ generic.xaml) verwende ich ein Border-Element, das den eigentlichen Inhalt umschließt.Sind Margin und Padding von ContentControl implementiert?

Implementiert mein benutzerdefiniertes Steuerelement bereits Rand und Padding (dh verkleinere den Rahmen entsprechend dem Padding des benutzerdefinierten Steuerelements) oder kann/kann ich selbst entscheiden, wo Rand und Padding angewendet werden (z. B. den Rand und Polstereigenschaften an der Grenze Element {TemplateBinding Margin} usw.

Vielen Dank im Voraus!

Antwort

8

Margin implementiert ich den ganzen Weg hinunter in Rahmenelement glauben. Allerdings padding nicht. Content hat die „PaddingProperty“ standardmäßig aber es tut nichts.Im Grunde binden Sie die MarginProperty des Inhalts an die Padding-Eigenschaft des Inhaltssteuerelements

+0

Ich habe in der Zwischenzeit einige Experimente gemacht. (Hinzufügen von bunten Grenzen auf jeder Ebene der Hierarchie) und ich bin zu dem gleichen Schluss gekommen. Danke trotzdem! –

0

Ich habe das Problem gelöst, indem ich einen Style für ContentControl definiert und die Padding an den Rand des in der Vorlage definierten ContentPresenters gebunden habe.

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

Vielleicht hilft dies anderen.