Frage

Ich versuche, die Hintergrundfarbe einer Kontrolle zu setzen, wenn die Maus über sie ist. Ich versuche es über den visuellen Status-Manager zu tun. Ich konnte den folgenden Code zum Laufen bringen:

<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Control.Background" Storyboard.TargetName="BorderBackground">
    <DiscreteObjectKeyFrame KeyTime="0">
        <DiscreteObjectKeyFrame.Value>
            <SolidColorBrush Color="#FF123456" />
        </DiscreteObjectKeyFrame.Value>
    </DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>

Aber ich will nicht die Farbe in der Vorlage setzen, sondern binden sie auf einen Wert der Kontrolle. Ich versuchte es mit der ‚Tag'-Eigenschaft auf die folgende Weise:

<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Control.Background" Storyboard.TargetName="BorderBackground">
    <DiscreteObjectKeyFrame KeyTime="0">
        <DiscreteObjectKeyFrame.Value>
            <SolidColorBrush Color="{TemplateBinding Tag}" />
        </DiscreteObjectKeyFrame.Value>
    </DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>

und die Einstellung der Tag-Eigenschaft des Steuerelements, die diesen Stil ‚# FF123456‘ verwendet wird.

Aber das funktioniert nicht. Es ist mir eine Fehlermeldung nicht verlassen, es einfach nicht die Hintergrundfarbe ändern. Jeder weiß, was das Problem sein könnte?

Vielen Dank im Voraus,
Frank

War es hilfreich?

Lösung

Leider ist die Art und Weise Sie versuchen, es nicht in Silverlight zu tun arbeiten. Die Visual Animationen sind nicht Teil des Anzeigebaumes, so dass Sie unverbindlich nutzen können. Sie haben Optionen aber StaticResources und Code-basierten Animationen sind verschiedene Abhilfen (aka Farben im Ressourcenverzeichnis Einrichtung) (je nach genau das, was Sie tun wollen). Für letztere Check-out einen Thread, in dem ich eine ähnliche Frage gestellt: Wie kann ich eine Unterkunft dynamisch in einem Silverlight 4 Usercontrol animieren?

Andere Tipps

Sie können es nicht dynamisch tun auf ein einzelnes Ziel, aber was kann man tun, ist ein weiteres Ziel erstellen (zum Beispiel genannt BorderBackgroundAlt), deren Hintergrund explizit gesetzt können {Template Tag} in seiner Erklärung.

Dann können Sie BorderBackgroundAlt standardmäßig reduziert, und in Ihrem Animationsrahmen statt Schalt Farben, Schalter Sichtbarkeiten, so dass BorderBackground kollabiert ist und BorderBackgroundAlt sichtbar ist.

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