我正在播放音频文件。当前曲目的位置由 silder 显示。滑块的值绑定到每 40 毫秒更新一次的属性。问题是,当用户拖动滑块的拇指时,位置会再次更新(计时器每 40 毫秒)。结果,用户不能改变拇指。我想创建一个滑块,在用户拖动拇指时不会更新他的 value 属性。
我试过这样的事情:
public class SliderDragPriority : Slider
{
bool allowvaluechange = true;
protected override void OnValueChanged(double oldValue, double newValue)
{
if (allowvaluechange)
base.OnValueChanged(oldValue, newValue);
//else -> don't change value
}
protected override void OnThumbDragDelta(System.Windows.Controls.Primitives.DragDeltaEventArgs e)
{
}
protected override void OnThumbDragStarted(System.Windows.Controls.Primitives.DragStartedEventArgs e)
{
base.OnThumbDragStarted(e);
allowvaluechange = false;
}
protected override void OnThumbDragCompleted(System.Windows.Controls.Primitives.DragCompletedEventArgs e)
{
allowvaluechange = true;
base.OnThumbDragCompleted(e);
}
}
代码的问题是, OnValueChanged 不会影响 value 属性。