2013-12-24 29 views
1

我試圖通過Slider的值更改DoubleAnimation控件的持續時間,但它不起作用。我不知道爲什麼?通過滑塊控制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)); 
     } 

任何幫助會感激!提前致謝。

回答

3

RepeatBehavior="Forever"設置爲True,所以這個動畫會永久運行,並且持續時間設置爲0:0:1。

如果您刪除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屬性,所以它會從恢復它在停止動畫之前離開它。

+0

太棒了!我做的。非常感謝Rohit Vats先生。 – HICURIN

+0

歡迎hicurin。 :) –