1

我正在播放音频文件。当前曲目的位置由 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 属性。

4

0 回答 0