Pregunta

Estoy trabajando en un estilo XAML para mis controles. El siguiente código es para configurar el color de un panel de pila. Funciona bien pero hay algo más que quiero hacer. Si el activador está activado, quiero establecer el color de fuente para todos los elementos secundarios dentro del panel de pila.

Por el momento solo tengo bloques de texto dentro del panel de pila y sé que podría crear fácilmente un estilo separado para un cuadro de texto. Pero si se activa este estilo, solo afectará UNO y NO TODOS los bloques de texto. Pero quiero cambiar todos los elementos dentro del panel de pila tan pronto como tenga un mouseover para el panel.

¿Es esto posible en XAML o tengo que codificar 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>    
¿Fue útil?

Solución

Agregue esto a su disparador:

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

Otros consejos

Como dijo Olle, puede establecer la propiedad adjunta TextElement.Foreground en un valor personalizado. Para un nodo de control / UI secundario en el árbol visual, si la propiedad no está establecida, WPF recorrerá la jerarquía de la 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 contenía un TextBox, su color de texto no se vería afectado. Utiliza la propiedad Foreground de la clase base Control ... Así que asegúrese de probarlo con todos los tipos de elementos secundarios posibles.

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