0

コントロールの値が変わるたびに、アニメーションを使用してコントロールの背景色と前景色を変更しています。無効になっているコントロールを除いて、正常に機能しています。使用しているアニメーションはこちら

<Storyboard
    x:Key="Anim"
    AutoReverse="True"
    Duration="500"
    FillBehavior="Stop">
    <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background">
        <DiscreteObjectKeyFrame KeyTime="0:0:0.002">
            <DiscreteObjectKeyFrame.Value>
                <SolidColorBrush Color="Red" />
            </DiscreteObjectKeyFrame.Value>
        </DiscreteObjectKeyFrame>
    </ObjectAnimationUsingKeyFrames>
    <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground">
        <DiscreteObjectKeyFrame KeyTime="0:0:0.002">
            <DiscreteObjectKeyFrame.Value>
                <SolidColorBrush Color="White" />
            </DiscreteObjectKeyFrame.Value>
        </DiscreteObjectKeyFrame>
    </ObjectAnimationUsingKeyFrames>
</Storyboard>

実行時にこのアニメーションのターゲットを次のように設定しています -

Storyboard anim = this.FindResource("Anim") as Storyboard;
if (anim != null)
{
    anim.SetValue(Storyboard.TargetProperty, animationTarget);
}

そして、値が変わるたびに私はそうします

_animation.Begin();

ターゲット コントロールは、TextBox、DropDown、CheckBox などのさまざまなタイプにすることができ、ViewModel プロパティに基づいて有効または無効にすることができることに注意してください。

無効なコントロールに対してこのアニメーションを機能させるにはどうすればよいですか?

4

2 に答える 2

1

無効なコントロールで機能しない理由は、コントロールのスタイル内で、無効な視覚状態にあるときにRectangleまたは が表示され、パネルBorderにオーバーレイされるためだと思います。Background

おそらく、添付プロパティ (例: DisabledBackground) を作成し、それを使用して無効なパネルのTemplateBindingにバインドする必要があります。次に、このプロパティを透明な色Backgroundにアニメーション化する必要があります。DisabledBackground

于 2012-04-03T11:01:41.827 に答える
0

BooleanAnimationUsingKeyFramesを使用して、かなり簡単な方法で問題を解決しました。BooleanAnimationUsingKeyFrames をアニメーションに追加したので、このアニメーションが適用されると、コントロールが短時間有効になり、アニメーションが実行され、コントロールが再び無効になります。

これについてのブログはこちら -無効なコントロールでアニメーションを機能させる

于 2012-06-13T12:08:40.283 に答える