2011-03-22 3 views
4

私はWPFアニメーションで遊んでいて、有線の問題に直面しています。アニメーションと2ウェイバインディングの有線問題

私はスライダとテキストボックスを持っています。テキストボックスは、2ウェイバインディングを使用してSlider.Valueにバインドされます。

<StackPanel> 
    <Slider x:Name="MySlider" Minimum="0" Maximum="100" Value="50" /> 
    <TextBox Text="{Binding ElementName=MySlider, Path=Value, Mode=TwoWay}" /> 
    <Button Click="Button_Click">Test</Button> 
</StackPanel> 

私はスライダー、テキストボックスの変更でテキストをドラッグすると。テキストボックス内のテキストを変更すると、スライダの値が更新され、正しく動作します。

これで、Slider.Valueプロパティを0にアニメーション化するアニメーションを追加しました。ボタンを押すとアニメーションが開始されます。私はボタンを押すと

private void Button_Click(object sender, RoutedEventArgs e) 
    { 
     Storyboard storyBoard = new Storyboard(); 
     DoubleAnimation animation = new DoubleAnimation(); 

     animation.Duration = new Duration(TimeSpan.FromSeconds(0.5)); 
     animation.To = 0; 

     Storyboard.SetTarget(animation, MySlider); 
     Storyboard.SetTargetProperty(animation, new PropertyPath(Slider.ValueProperty)); 

     storyBoard.Children.Add(animation); 

     storyBoard.Begin(); 
    } 

は、アニメーションスクロールスライダーが0のTextBoxにもある0 syncronyously wothスライダーに変更されます。

今、私は問題に直面しています。アニメーション後、テキストボックス内のテキストを変更することはできません。テキストを変更し、フォーカスを移動し、スライダの値を0にリセットしてテキストを変更します。スライダとテキストボックスの更新はスライダの値で変更できます。しかし、私はテキストボックスを使用してスライダーの値を設定することはできません。

私は、アニメーションが停止すると、何らかの値がanimation.Toプロパティで指定された値に固定されていると思うが、それを解凍する方法はわかりません。それとも別のものかもしれませんか?

はそれがアニメーションによって設定された値が結合を介して設定された値よりも高い「優先順位」を持っていることを意味し、なぜなら、依存関係プロパティ値の優先順位の起こるあなた

答えて

3

ありがとうございます。コード内 アニメーションプロパティのコントロールを取り戻すために

一つの方法AnimationTimeline パラメータに にBeginAnimationメソッドを使用して ヌルを指定するには、次のとおりです。ここでは

は、この問題を回避する方法についてはMSDNからの引用であります。詳細および の例については、How to: Set a Property After Animating It with a Storyboardを参照してください。

+0

ありがとう、このリンクは非常に役立ちます! –

関連する問題