2009-01-23 12 views
5

Opracowuję niestandardową formantu pochodzącego z System.Windows.Controls.ContentControl. W domyślnym szablonie kontrolek (themes \ generic.xaml) używam elementu Border, który otacza rzeczywistą treść.Czy margines i dopełnienie są implementowane przez ContentControl?

Czy mój zwyczaj kontrola już wdrożyć Marginesy zewnętrzne i wewnętrzne (tj kurczyć granicę zgodnie z wyściółką ustawionej na kontrolę niestandardowej) lub zrobić/mogę zdecydować się, gdzie margines i wyściółka są stosowane (tj ustawić margines i właściwości wypełniające na elemencie granicznego do {TemplateBinding Margin} itp

z góry dzięki!

Odpowiedz

8

Margin jest realizowany wierzę w dół w elemencie ramowym. Jednakże Dopełnienie nie jest. ContentControl ma „PaddingProperty”, ale domyślnie nic nie robi. Zasadniczo wiążą MarginProperty treści do właściwości padding kontroli zawartości.

+0

Robiłem kilka eksperymentów w międzyczasie. (Dodawanie kolorowych ramek na każdym poziomie hierarchii) i doszedłem do tego samego wniosku. Dziękujemy jednak! –

0

I rozwiązać problem poprzez zdefiniowanie stylu dla ContentControl i wiążące wyściółki do marginesu ContentPresenter zdefiniowanej w szablonie.

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

Może to pomaga innym.

Powiązane problemy