2009-03-02 15 views
10

Estoy trabajando en un estilo XAML para mis controles. El siguiente código es para establecer el color de un panel de distribución. Funciona bien, pero hay algo más que quiero hacer. Si el disparador está activado, quiero establecer el color de fuente para todos los elementos secundarios dentro del panel de distribución.WPF/XAML Estilo establecido ¿Propiedad para elementos secundarios?

Por el momento solo tengo bloques de texto dentro del stackpanel y sé que podría crear fácilmente un estilo separado para un textbock. Pero si este estilo se activa, solo afectará a ONE y no a TODOS los bloques de texto. Pero quiero cambiar todos los elementos dentro del panel de distribución tan pronto como obtenga un desencadenador de mouseover para el panel.

¿Esto es posible incluso en XAML o tengo que programar un evento normal?

<Style x:Key="XStack" TargetType="StackPanel"> 
    <Setter Property="Background"> 
     <Setter.Value> 
      <LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> 
       <GradientStop Color="White" Offset="0"/> 
       <GradientStop Color="SkyBlue" Offset="6"/>      
      </LinearGradientBrush> 
     </Setter.Value> 
    </Setter> 
    <!-- Trigger--> 
    <Style.Triggers> 
     <Trigger Property="IsMouseOver" Value="True" > 
      <Setter Property="Background" Value="SkyBlue"/> 
     </Trigger> 
    </Style.Triggers> 
</Style>  
+0

Gracias! Funciona como un sueño! – TalkingCode

Respuesta

14

Agregue esto a su disparador:

<Setter Property="TextElement.Foreground" Value="Blue"></Setter>

3

Como dijo Olle, puede establecer la propiedad adjunta TextElement.Foreground a un valor personalizado. Para un control de niño/nodo de UI en el árbol visual, si la propiedad no está establecida, WPF subirá la jerarquía de UI hasta que encuentre un valor y lo use. Esto significa que todos los controles secundarios pueden compartir un valor de propiedad definido en el nivel primario.

Esto debería funcionar para todos los TextBlocks ... sin embargo, si su StackPanel contuviera un TextBox, su color de texto no se vería afectado. Utiliza la propiedad de primer plano de la clase de base de control ... Por lo tanto, asegúrese de probarla con todos los tipos de elementos secundarios posibles.

Cuestiones relacionadas