1

Slider の値で DoubleAnimation コントロールの期間を変更しようとしていますが、効果がありません。どうしてか分かりません?

これが私のコードです:

XAML:

<Border.Triggers>
    <EventTrigger RoutedEvent="Loaded">
       <BeginStoryboard>
           <Storyboard Storyboard.TargetName="borUpperTranslate" Storyboard.TargetProperty="X">
               <DoubleAnimation Name="dbaUpperTranslate" From="418" To="230" Duration="0:0:1" RepeatBehavior="Forever" AutoReverse="True"/>
            </Storyboard>
       </BeginStoryboard>
    </EventTrigger>

C#:

 private void Slider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
        {
            Slider sl = sender as Slider;
            dbaUpperTranslate.Duration = new Duration(TimeSpan.FromSeconds(sl.Value));
        }

どんな助けでも大歓迎です!前もって感謝します。

4

1 に答える 1

3

RepeatBehavior="Forever"に設定するTrueと、このアニメーションは永久に実行され、0:0:1 に設定された期間で開始されます。

イベント sayを削除RepeatBehavior="Forever"してフックするとMouseLeftButtonDown、期待どおりに機能します。


ただし、 で更新する場合はRepeatBehavior="Forever"、 が必要ですstop animation first, set duration and than restart animation

ストーリーボードに名前を設定:

<Storyboard Storyboard.TargetName="borUpperTranslate"
            Storyboard.TargetProperty="X" Name="storyboard">

そしてハンドラーで:

Slider sl = sender as Slider;
storyboard.Stop();
dbaUpperTranslate.Duration = new Duration(TimeSpan.FromSeconds(sl.Value));
storyboard.Begin();

さらに、ぎくしゃくした外観が望ましくない場合は、From属性を削除することを検討する必要があります。これにより、アニメーションが停止する前に離れた場所から再開されます。

于 2013-12-24T05:32:57.507 に答える