質問

マウスの上にあるときに、コントロールの背景色を設定しようとします。 Visual State Managerを介してやろうとしています。次のコードを実行することができました。

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

しかし、私はテンプレートに色を設定したくありませんが、コントロールの値に結合します。 「Tag」プロパティで次の方法で試しました。

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

このスタイルを使用しているコントロールのタグプロパティを「#FF123456」に設定します。

しかし、これはうまくいきません。エラーメッセージは残されません。背景を変更するだけではありません。誰かが知っています、問題は何でしょうか?

前もって感謝します、
フランク

役に立ちましたか?

解決

残念ながら、あなたがそれをしようとしている方法は、シルバーライトでは機能しません。 VisualStateManagerアニメーションはディスプレイツリーの一部ではないため、バインディングを使用できません。ただし、staticResources(リソース辞書で色の設定)とコードベースのアニメーションは、さまざまな回避策です(正確に何をしたいかによって異なります)。後者については、同様の質問をしたスレッドをチェックしてください。 Silverlight 4 UserControlでプロパティを動的にアニメーション化するにはどうすればよいですか?

他のヒント

単一のターゲットで動的に行うことはできませんが、できることは、宣言で明示的に{テンプレートバインディングタグ}に背景を設定できる別のターゲット(BorderbackgroundAltと呼ばれる)を作成することです。

次に、デフォルトでBorderbackgroundAltを崩壊させることができます。また、色を切り替える代わりにアニメーションフレームで可視性を切り替えることができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top