Evitar controles en ControlTemplate que heredan estilos globales (WPF)

Tengo este estilo genérico para un control personalizado con esta plantilla.

<Style TargetType="{x:Type local:MyType}">        
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type local:MyType}">                    
                    <Border Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}">
                        <local:MyControl />
                    </Border>
                    ...

si este control se usa en un proyecto donde este estilo está configurado globalmente:

<Style  TargetType="{x:Type Border}">
    <Setter Property="Padding" Value="3" />
    <Setter Property="VerticalAlignment" Value="Top" />
</Style>

Pero MyControl es un ordinario UserControl que contiene: ...

<Border .. />

Luego, el borde en el control de usuario (que reside en la plantilla) también hereda este estilo (relleno 3, etc.)
¿Hay alguna forma de decir que los controles en ControlTemplate no hereden estos estilos globales? Solo por mencionar. Es una plantilla genérica

preguntado el 04 de julio de 12 a las 10:07

2 Respuestas

No estoy seguro si te entendí bien. Hice algo de trabajo ya que tenía una situación similar en la que todos los estilos de mi control se especificaban globalmente y se heredaban automáticamente sin x:key.

Tuve que eliminar estilos para algunos controles y aplicar un estilo diferente para algunos controles.

En esa situación, he creado un estilo separado (abajo, por ejemplo, quiere eliminar estilos), así que solo creé un estilo vacío y lo usé donde sea y para cualquier control que sea necesario.

Estilo vacío:

<Grid.Resources>
    <ResourceDictionary>
        <Style x:Key="EmptyStyle"/>
    </ResourceDictionary>
</Grid.Resources>

Aplicar al control:

<TextBlock Text="First Name" Style="{StaticResource EmptyStyle}" />

Respondido el 11 de Septiembre de 14 a las 15:09

Puede poner su Estilo en un diccionario de recursos con ax:Key, siempre he hecho esto y mi estilo se aplica solo si especifico la tecla en mi control.

Respondido 04 Jul 12, 11:07

Sí, pero imagina que el estilo debe aplicarse a todos los controles de la aplicación. Excepto de este control personalizado.. - el llanto del espía

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.