Domanda

Sto lavorando su uno stile XAML per i miei controlli. Il codice seguente serve per impostare il colore di uno stackpanel. Funziona bene ma c'è qualcos'altro che voglio fare. Se il trigger è attivato, voglio impostare il colore del carattere per tutti gli elementi figlio all'interno dello stackpanel.

Al momento ho solo blocchi di testo all'interno dello stackpanel e so che potrei facilmente creare uno stile separato per un textbock. Ma se questo stile viene attivato, influirà solo su ONE e non su TUTTI i blocchi di testo. Ma voglio cambiare tutti gli elementi all'interno dello stackpanel non appena ho un trigger di mouseover per il pannello.

È possibile anche in XAML o devo codificare un evento normale?

<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>    
È stato utile?

Soluzione

Aggiungi questo al tuo trigger:

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

Altri suggerimenti

Come ha detto Olle, puoi impostare la proprietà collegata TextElement.Foreground su un valore personalizzato. Per un nodo di controllo figlio / UI nella struttura ad albero visivo, se la proprietà non è impostata, WPF eseguirà la gerarchia dell'interfaccia utente finché non trova un valore e lo utilizza. Ciò significa che tutti i controlli figlio possono condividere un valore di proprietà definito a livello padre.

Questo dovrebbe funzionare per tutti i TextBlocks ... tuttavia se StackPanel contenesse un TextBox, il suo colore del testo non ne risentirebbe. Utilizza la proprietà Foreground della classe base Control ... Quindi assicurati di provarlo con tutti i possibili tipi di elementi figlio.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top