2011-09-14 52 views
1

我如何在Wpf 4中進行「Spring」滑動控制? 拇指總是回到設定點0, 釋放拇指後,它跳到像「春天」開始。 乾杯 丟「Spring」wpf滑塊控件

回答

0

可以使用觸發器爲此在XAML

 <Slider x:Name="slider"> 
     <Slider.Triggers> 
      <EventTrigger SourceName="slider" RoutedEvent="Thumb.DragCompleted">  
       <BeginStoryboard> 
        <Storyboard> 
         <DoubleAnimation Storyboard.TargetName="slider" Storyboard.TargetProperty="Value" From="{Binding Value, ElementName=slider}" To="0" Duration="0:0:1"/> 
        </Storyboard> 
       </BeginStoryboard>   
      </EventTrigger> 
     </Slider.Triggers>    
    </Slider> 

但是(這只是一個第二的持續時間彈回拇指釋放),這將不會捕捉單擊滑塊上的步驟或直接設置Value屬性。爲了完全捕獲這個,你需要聽取所有三個事件(Thumb.DragCompleted,Thumb.DragStarted和Slider.ValueChanged),並確保在拖動拇指時不要使用任何動畫。您還需要自定義動畫的持續時間,因爲目前它具有恆定的時間,而不是恆定的速度。

儘管可以在XAML中完全完成,但您可能會發現使用代碼隱藏更容易實現「彈性」滑塊的完整功能實現。

+0

(Xaml)的工作,但第一次滑塊得到延遲後。 – Diu

+0

Hey Diu,看起來像是顯式綁定解析的From屬性的defaultt評估問題(更新瞭解決方案以反映此問題)。 DoubleAnimation的默認持續時間爲1秒,但如果您希望在沒有任何動畫的情況下立即將滑塊重置爲零,則可以設置Duration =「0:0:0」。 –

+0

謝謝,偉大的來源! – Diu