私はWPFアニメーションで遊んでいて、奇妙な問題に直面しました。
私はとを持っていSlider
ますTextBox
。TextBoxは、双方向バインディングを使用して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();
var 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に変わります。
そして今、私は問題に直面しています。アニメーションの後、TextBoxのテキストを変更できません。テキストを変更してフォーカスを移動すると、スライダー値のあるテキストが0にリセットされます。引き続きスライダーを移動でき、TextBoxがスライダー値で更新されます。しかし、TextBoxを使用してスライダーの値を設定することはできません。
アニメーションが停止すると、プロパティで指定された値で値がフリーズすると思いますが、フリーズanimation.To
を解除する方法がわかりません。または多分それは何か他のものですか?