我目前在WPF中制作MP3播放器,我想制作一个滑块,允许用户通过向左或向右滑动滑块来寻找MP3中的特定位置.
我已尝试使用该ValueChanged事件,但每次更改值时都会触发,因此如果将其拖动,事件将多次触发,我希望事件仅在用户完成拖动滑块时触发然后获取新事件价值.
我怎样才能做到这一点?
[更新]
我在MSDN上发现这篇文章基本上讨论了同样的事情,他们提出了两个"解决方案"; 要么继承Slider,要么在一个时间跨度后调用动作DispatcherTimer的ValueChanged事件中调用a.
你能想出比上面提到的更好的东西吗?
你可能会说它是如何在拖动时停止更新滑块值的重复?但老实说,解决方案从2011年开始,并没有为我工作(甚至评论了其他用户接受的答案),其他答案与我无关.所以请耐心等待.
这是我的问题:我有一个绑定到这样的值的滑块:
<Slider Name="AudioSlider" Value="{Binding AudioValue}"
Grid.Column="1" Grid.Row="1" Height="30"
SmallChange="1" Maximum="100"
IsSnapToTickEnabled="True"
IsMoveToPointEnabled="True"/>
Run Code Online (Sandbox Code Playgroud)
这就是价值:
private double _audioValue;
public double AudioValue
{
get { return _audioValue; }
set
{
if (_audioValue == value)
return;
_audioValue = value;
SendPacket(cockpitType, (byte)Index.AudioSlider, (byte)_audioValue);
OnPropertyChanged("AudioValue");
}
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,每次值发生变化时我都会发送一个数据包,当它更新拖动值时,它只是在服务器上发送垃圾邮件,这是必须要防止的.
我试图将滑块绑定到一个函数(mouseUp),但我无法通过这种方式获取值.
任何想法我能做什么?
非常感谢.
编辑:
这里的答案WPF:在用户拖动后触发事件的滑块对我没有帮助,因为它是数据模板中生成的滑块,事件与我无关.