2012-04-12 17 views
9

Estoy creando un estilo que se dirige a un botón. Los botones a los que se aplicará el estilo tienen una imagen y un bloque de texto en un panel de pila dentro de ellos. Estoy buscando utilizar un disparador para afectar las propiedades de los controles secundarios basados ​​en ciertas condiciones.Cómo afectar las propiedades de control secundario de un estilo

Me gustaría utilizar el estilo del botón para poder afectar la orientación de los paneles de la pila, así como el ancho definido de la imagen.

He examinado los diversos tipos de control infantil que están disponibles en la inteligencia de la propiedad de la configuración del estilo ... Puedo ver cosas como Grid, DockPanel y TextBlock ... pero los que estoy buscando son muy notables en su ausencia.

¿Hay alguna razón por la que no puedo afectar ciertos tipos de control infantil? ¿Hay alguna manera de hacerlo sin rodar un control personalizado que expone explícitamente las propiedades de control secundario que estoy buscando afectar?

Respuesta

21

Puede utilizar los estilos implícitos:

<Style TargetType="Button" x:Key="myButtonStyle"> <!-- Has a key, will only be applied on elements that have their style set to {StaticResource myButtonStyle} --> 
    <Setter Property="Background" Value="Green" /> 
    ... 
    <Style.Resources> 
     <Style TargetType="Image"> <!-- No key, so it is implicit and will apply to any child element of type Image --> 
     <Setter Property="Height" Value="20" /> 
     ... 
     </Style> 
    </Style.Resources> 
</Style> 

Por supuesto puede agregar disparadores también.

+4

¡Eso funcionó perfectamente! No sabía si podría establecer recursos en un estilo. Esto era exactamente lo que estaba buscando. Aceptaré su respuesta en unos minutos cuando caduque la demora impuesta por el sitio. ¡Gracias! – Chronicide

+0

Desafortunadamente, esto no funciona en las aplicaciones UWP. – ThisWillDoIt

Cuestiones relacionadas