Wpf &引用;“春天”;滑动控制
如何在WPF4中制作“弹簧”滑块控件? 拇指始终回到设定点0, 松开拇指后,它会像“弹簧”一样跳到起点。 干杯Wpf &引用;“春天”;滑动控制,wpf,slider,Wpf,Slider,如何在WPF4中制作“弹簧”滑块控件? 拇指始终回到设定点0, 松开拇指后,它会像“弹簧”一样跳到起点。 干杯 Diu您可以在XAML中使用触发器来实现这一点(这只是在拇指释放时反弹,持续时间为1秒) 但是,这不会捕获在滑块上单击的步骤或直接设置Value属性。要完全捕捉到这一点,您需要聆听所有三个事件(Thumb.DragCompleted、Thumb.DragStarted和Slider.ValueChanged),并确保在拖动拇指时不应用任何动画。您还需要自定义动画的持续时间,因为当前
Diu您可以在XAML中使用触发器来实现这一点(这只是在拇指释放时反弹,持续时间为1秒)
但是,这不会捕获在滑块上单击的步骤或直接设置Value属性。要完全捕捉到这一点,您需要聆听所有三个事件(Thumb.DragCompleted、Thumb.DragStarted和Slider.ValueChanged),并确保在拖动拇指时不应用任何动画。您还需要自定义动画的持续时间,因为当前动画具有恒定的时间,而不是恒定的速度
虽然完全在XAML中实现是可能的,但您可能会发现使用代码隐藏来实现“springy”滑块的全功能实现更容易。Hey Diu,看起来From属性的defaultt求值存在问题,显式绑定解决了这个问题(更新的解决方案反映了这一点)。DoubleAnimation的默认持续时间为1秒,但如果您希望它在没有任何动画的情况下立即将滑块重置为零,则可以设置duration=“0:0:0”。
<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>