2012-04-03 4 views
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プロパティに基づいてEnabledまたはDisabledにすることができます。

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

答えて

0

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

は、ここでは、このについてブログ - 新は、はいそのようなことは、この動作を引き起こしているが、私はこのパネルに名前を付けることにした場合、私は非常に多くのコントロールのコントロールテンプレートを上書きする必要があります(テキストボックス、ドロップダウンMaking animations work for disabled controls

1

は、私はそれが無効のコントロールのために動作しないことの理由は、それが無効に視覚的な状態にあるときに、コントロールのスタイルの内側に、現れてRectangleまたはBorderがあるためであると思いますし、それがBackgroundをオーバーレイパネル。

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

+0

感謝を..)! – akjoshi

+0

申し訳ありませんが、パネルの名前を付けても機能しない場合は、ここに添付されたプロパティが必要です...簡単な方法はないと思います... –

関連する問題