Wpf &引用;“春天”;滑动控制

Wpf &引用;“春天”;滑动控制,wpf,slider,Wpf,Slider,如何在WPF4中制作“弹簧”滑块控件? 拇指始终回到设定点0, 松开拇指后,它会像“弹簧”一样跳到起点。 干杯 Diu您可以在XAML中使用触发器来实现这一点(这只是在拇指释放时反弹,持续时间为1秒) 但是,这不会捕获在滑块上单击的步骤或直接设置Value属性。要完全捕捉到这一点,您需要聆听所有三个事件(Thumb.DragCompleted、Thumb.DragStarted和Slider.ValueChanged),并确保在拖动拇指时不应用任何动画。您还需要自定义动画的持续时间,因为当前

如何在WPF4中制作“弹簧”滑块控件? 拇指始终回到设定点0, 松开拇指后,它会像“弹簧”一样跳到起点。 干杯
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>