2011-07-11 8 views
0

私は新たに露出したUI要素は時間をかけて白にフェード赤枠で表示されるように、WPFでcoloranimationをやろうとしています。ここで私が持っているコードは次のとおりです。ColorAnimationのヘルプ?

 SolidColorBrush toFade = new SolidColorBrush(Colors.Red); 

    private void showElement(SuperTB.SuperTextB toShow) 
    { 
     toShow.Visibility = Visibility.Visible; 
     toShow.BorderBrush = toFade; 

     ColorAnimation fadeToWhite = new ColorAnimation(); 
     fadeToWhite.To = Colors.White; 
     fadeToWhite.Duration = TimeSpan.FromSeconds(1); 
     Storyboard.SetTargetName(fadeToWhite, "toFade"); 
     Storyboard.SetTargetProperty(fadeToWhite, new PropertyPath(SolidColorBrush.ColorProperty)); 
     Storyboard fade = new Storyboard(); 
     fade.Children.Add(fadeToWhite); 
     fade.Begin(this); 
    } 

と私のメインウィンドウのコンストラクタで、私は、メソッドが呼び出される

this.RegisterName("toFade", toFade); 

を持って、目的の要素が表示されますが、何色のアニメーションはありません。私は間違って何をしていますか?

答えて

0

私はまっすぐにあなたを教えてくれます、私は一度だけのコードでアニメーションを行っている、それは恐ろしいでした。私はVS2008のXAMLでアニメーションを手にしました。それは恐ろしいものでした。それから私はcopy of Expression Blendを持って、デザイナーでアニメーション...

そんなに簡単に、そして私がより正確にアニメーションを制御できるので、それはあまりにも良く見えました。あなた自身に恩恵を与えて、ブレンドしてください。それはそれだけの価値があります。それに慣れるには少しかかりますが、それは長期的には膨大な時間の節約になります。

+0

Blendはコードを生成していますが、私はすべてが好きではありません。なぜなら、すべてがどこにあり、どのように構造化されているのか知っているからです。あなたがC#またはXAMLでアニメーション化するいくつかの時間のためにそれを行う場合は、さらに同様、非常に自然になります。 –

+0

@ H.B。教育目的でコードを生成するのに間違いはありません。それがどのように行われたかを見て、その情報を使って強化する。 :) –

+0

確かに。 Blendのアニメーションに入ると、実際にデザイナーで行うことがいくつかあることがわかります。パスアニメーション、イージングファンクション、オフセットアニメーションなどです。私は、作業自体が動いているオフセットでアニメーション化する作業を想像することができます。 – CodeWarrior

0

アニメーションが1つしかないのでストーリーボードは不要ですが、ブラシにBeginAnimationと電話するだけです。それだけです。例えばあなたは、コードでストーリーボードを使用する必要がある場合

Action<TextBox> animMethod = (TextBox x) => 
    { 
     var brush = new SolidColorBrush(Colors.Red); 
     x.Visibility = Visibility.Visible; 
     x.BorderBrush = brush; 
     brush.BeginAnimation(SolidColorBrush.ColorProperty, new ColorAnimation(Colors.White, TimeSpan.FromSeconds(1))); 
    }; 
animMethod(tbtest); 

また、背後にあなただけの名前ではなく、適切な参照を持っているようにないTargetName財産単にTargetプロパティを使用して行います。