1

コントロールの上にマウスを置いたときに、コントロールの背景色を設定しようとしています。私はビジュアルステートマネージャーを介してそれをやろうとしています。次のコードを実行することができました。

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

しかし、私はテンプレートに色を設定したくありませんが、それをコントロールの値にバインドします。次のように、「タグ」プロパティを使用して試してみました。

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

このスタイルを使用しているコントロールのTag-Propertyを「#FF123456」に設定します。

しかし、これは機能しません。それは私にエラーメッセージを残しません、それは単に背景色を変えません。誰もが知っている、問題は何でしょうか?

よろしくお願いします、
フランク

4

2 に答える 2

2

残念ながら、Silverlightではそれを実行しようとしている方法は機能しません。VisualStateManagerアニメーションは表示ツリーの一部ではないため、バインディングを使用することはできません。ただし、オプションがあります。StaticResources(リソースディクショナリでの色の設定)とコードベースのアニメーションは、(実行したい内容に応じて)異なる回避策です。後者については、同様の質問をしたスレッドを確認してください。Silverlight4 UserControlでプロパティを動的にアニメーション化するにはどうすればよいですか?

于 2010-12-14T14:46:23.793 に答える
0

単一のターゲットで動的に実行することはできませんが、実行できるのは、宣言で{TemplateBinding Tag}に明示的に設定できる背景を持つ別のターゲット(たとえば、BorderBackgroundAltと呼ばれる)を作成することです。

次に、BorderBackgroundAltをデフォルトで折りたたむことができます。アニメーションフレームでは、色を切り替える代わりに、BorderBackgroundが折りたたまれ、BorderBackgroundAltが表示されるように、表示を切り替えます。

于 2013-12-10T20:46:14.497 に答える