Frage

Ich arbeite an einem XAML-Stil für meine Kontrollen. Der folgende Code ist für die Farbe eines Stackpanel einstellen. Es funktioniert gut, aber es ist etwas, was ich tun will. Wenn der Auslöser aktiviert wird Ich möchte in der Stackpanel die Schriftfarbe für alle untergeordneten Elemente setzen.

Im Moment habe ich nur Textblöcke innerhalb des Stackpanel und ich weiß, dass ich einfach einen separaten Stil für eine textbock schaffen könnte. Aber wenn dieser Stil ausgelöst wird, wird es Auswirkungen auf nur ein und nicht alle Textblöcke. Aber ich will in der Stackpanel alle Einzelteile ändern, sobald ich für die Platte einen Mouseover-Trigger bekam.

Ist dies überhaupt möglich in XAML oder muss ich eine regelmäßige Veranstaltung codieren?

<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>    
War es hilfreich?

Lösung

Fügen Sie diese auf Ihre Trigger:

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

Andere Tipps

Wie Olle sagte, können Sie die angefügten Eigenschaft TextElement.Foreground auf einen benutzerdefinierten Wert einstellen. Für ein Kind Steuerung / UI-Knoten in der visuellen Struktur, wenn die Eigenschaft nicht gesetzt ist, wird WPF die UI-Hierarchie geht bis sie einen Wert findet und verwenden. Das bedeutet, dass alle untergeordneten Steuerelemente einen Eigenschaftswert auf der übergeordneten Ebene definiert teilen können.

Dies sollte für alle Textblocks arbeiten ... aber wenn Ihr Stackpanel einen Text enthalten ist, würde seine Textfarbe nicht berührt. Es nutzt die Eigenschaft Vordergrund aus der Klasse Control-Basis ... So sicher sein, es mit allen möglichen Kind Elementtypen zu testen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top