我正在播放音频。当前曲目的位置由silder显示。滑块的值绑定到每40ms更新一次的属性。问题是,当用户拖动滑块的拇指时,位置再次更新(定时器每40ms)。结果,用户无法改变拇指。我想创建一个滑块,在用户拖动滑块时不会更新其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属性。