2009-01-23 11 views
5

Estoy desarrollando un control personalizado derivado de System.Windows.Controls.ContentControl. En la plantilla predeterminada de controles (themes \ generic.xaml), utilizo un elemento de borde que envuelve el contenido real.¿Margin and Padding es implementado por ContentControl?

¿Mi control personalizado ya implementa margen y relleno (es decir, reducir el borde de acuerdo con el conjunto de relleno en el control personalizado) o puedo/puedo decidirlo, donde se aplican margen y relleno (es decir, establecer el margen y propiedades de relleno en el elemento de frontera a {TemplateBinding Margin} etc.

Gracias de antemano!

Respuesta

8

Margen se implementa creo que todo el camino hacia abajo en el elemento de marco. sin embargo relleno no lo es. ContentControl tiene la "PaddingProperty" pero por defecto no hace nada. Básicamente enlaza la propiedad MarginProperty del contenido a la propiedad de relleno del control de contenido.

+0

He estado haciendo algunos experimentos mientras tanto. (Agregando bordes coloridos en cada nivel de la jerarquía) y llegué a la misma conclusión. ¡Gracias, no obstante! –

0

Resolví el problema definiendo un estilo para ContentControl y vinculando el Relleno al Margen del ContentPresenter definido en la plantilla.

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

Quizás esto ayude a los demás.

Cuestiones relacionadas