WPF:创建慢速移动滑块

WPF:创建慢速移动滑块,wpf,slider,Wpf,Slider,我需要创建一个慢速滑块,因此如果用户移动太快,滑块将尝试缓慢地到达鼠标。就像一个低通滤波运动 我需要它,因为滑块会影响发动机的功率,而发动机的功率变化不应该太快 我不熟悉数据绑定,但是我用我的属性绑定了两种方式,并且它可以工作。所以我想继续使用这个滑块,而不用重新编码太多东西 我尝试抓取已更改的值,检查旧值和新值之间的差异是否太大,但是我无法编辑e.NewValue(它只显示Get,而不是set) 我试着在ValueChanged中设置slider.Value,但它会导致stackoverflo

我需要创建一个慢速滑块,因此如果用户移动太快,滑块将尝试缓慢地到达鼠标。就像一个低通滤波运动

我需要它,因为滑块会影响发动机的功率,而发动机的功率变化不应该太快

我不熟悉数据绑定,但是我用我的属性绑定了两种方式,并且它可以工作。所以我想继续使用这个滑块,而不用重新编码太多东西

我尝试抓取已更改的值,检查旧值和新值之间的差异是否太大,但是我无法编辑e.NewValue(它只显示Get,而不是set) 我试着在ValueChanged中设置slider.Value,但它会导致stackoverflow(我猜是由于反向提供更改的绑定)

我也尝试使用Thumb_DragDelta,但同样,我可以看到值,但无法设置新的(较小的)增量

有什么线索吗


编辑 我输入了控制受影响属性(绑定属性)设置部分最大增加量的代码,因此增加量实际上会减慢,但是,只有当您移动鼠标、拖动过快时,才会发生更新,因此拇指会后退,并且您停止移动鼠标,拇指不会跟随您。如果你点击移动鼠标,拇指就会指向鼠标

我猜这是因为只有在发生DragDelta时才会调用更改的值,而只有在MouseMove时才会调用


有什么解决办法吗?

免责声明:这是另一种解决方案

一个滞后于光标的滑块对我来说似乎很奇怪。就用户体验而言,这会给人一种应用程序滞后的印象,而不是逐渐增长的印象。我个人会创建一个带有禁用滑块和两个重复按钮的用户控件。这可能看起来像这样:

<Window x:Class="WpfApplication2.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
<StackPanel Orientation="Horizontal" Height="25">
    <RepeatButton Click="ButtonLess_Click" Content="less"/>
    <Slider Width="200" IsEnabled="False" Name="Slider1" ></Slider>
    <RepeatButton Click="ButtonMore_Click" Content="more"/>
</StackPanel>
</Window>


这样您就无法滑动滑块本身,但单击/按住“少”或“多”会逐渐增加或减少滑块。

这肯定会起作用,但不是我想要的。设计正是我所解释的,你可以拖动任何你想拖动的地方,但它的移动速度只有在引擎能够真正改变动力的时候。无论如何,谢谢你的代码示例
    private void ButtonLess_Click(object sender, RoutedEventArgs e)
    {
        Slider1.Value = Math.Max(Slider1.Minimum, Slider1.Value - Slider1.SmallChange);
    }

    private void ButtonMore_Click(object sender, RoutedEventArgs e)
    {
        Slider1.Value = Math.Min(Slider1.Maximum, Slider1.Value + Slider1.SmallChange);
    }