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!

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top