¿ContentControl implementa el margen y el relleno?
-
19-08-2019 - |
Pregunta
Estoy desarrollando un control personalizado derivado de System.Windows.Controls.ContentControl. En la plantilla predeterminada de controles (themes \ generic.xaml), utilizo un elemento Border que envuelve el contenido real.
¿Mi control personalizado ya implementa margen y relleno (es decir, encoge el borde de acuerdo con el conjunto de relleno en el control personalizado) o puedo / puedo decidir por mí mismo, dónde se aplica el margen y el relleno (es decir, establecer el margen y el relleno propiedades en el elemento de borde para {TemplateBinding Margin}
etc.
¡Gracias de antemano!
Solución
El margen está implementado, creo en el elemento Framework. Sin embargo, el relleno no lo es. ContentControl tiene la " PaddingProperty " pero por defecto no hace nada. Básicamente, vincula la propiedad Margin del contenido a la propiedad Padding del control de contenido.
Otros consejos
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 otros.