Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 滑块-捕捉到点并与事件一起拖动_C#_Wpf_Events_Slider - Fatal编程技术网

C# 滑块-捕捉到点并与事件一起拖动

C# 滑块-捕捉到点并与事件一起拖动,c#,wpf,events,slider,C#,Wpf,Events,Slider,我需要在滑块的拇指拖动到一个新值时触发一个事件,或者使用“捕捉到点”单击到一个新值时触发一个事件。我只希望在值更改时发生此事件,这两种方式是使用鼠标,因此值更改事件将不起作用。您可以尝试此小技巧 首先,需要将UpdateSourceTrigger设置为Explicit <Slider Minimum="0" Thumb.DragStarted="Slider_DragStarted" Thumb.DragCompleted="Slider_DragCompl

我需要在滑块的拇指拖动到一个新值时触发一个事件,或者使用“捕捉到点”单击到一个新值时触发一个事件。我只希望在值更改时发生此事件,这两种方式是使用鼠标,因此值更改事件将不起作用。

您可以尝试此小技巧

首先,需要将UpdateSourceTrigger设置为Explicit

<Slider Minimum="0"
        Thumb.DragStarted="Slider_DragStarted"
        Thumb.DragCompleted="Slider_DragCompleted"
        Maximum="{Binding YourMaxBinding, Mode=OneWay}"
        Value="{Binding CurrentPosition, Mode=TwoWay, UpdateSourceTrigger=Explicit}" />
在视图模型中编写代码

private bool _dontUpdateSliderPosition;
public bool DontUpdateSliderPosition {
    get {
        return _dontUpdateSliderPosition;
    }
    set {
        if (Equals(value, _dontUpdateSliderPosition)) {
            return;
        }
        _dontUpdateSliderPosition = value;
        yourPropertyChangedFunc("DontUpdateSliderPosition");
    }
}

private int _currentPosition;
public int CurrentPosition {
    get {
        return _currentPosition;
    }
    set {
        if (Equals(value, _currentPosition)) {
            return;
        }
        _currentPosition = value;
        yourPropertyChangedFunc("CurrentPosition");
    }
}

private CodeBehindFuncToChangeTheSliderPosition(){
    if (!DontUpdateSliderPosition) {
        CurrentPosition = theNewPosition;
    }
}
希望这有帮助

private bool _dontUpdateSliderPosition;
public bool DontUpdateSliderPosition {
    get {
        return _dontUpdateSliderPosition;
    }
    set {
        if (Equals(value, _dontUpdateSliderPosition)) {
            return;
        }
        _dontUpdateSliderPosition = value;
        yourPropertyChangedFunc("DontUpdateSliderPosition");
    }
}

private int _currentPosition;
public int CurrentPosition {
    get {
        return _currentPosition;
    }
    set {
        if (Equals(value, _currentPosition)) {
            return;
        }
        _currentPosition = value;
        yourPropertyChangedFunc("CurrentPosition");
    }
}

private CodeBehindFuncToChangeTheSliderPosition(){
    if (!DontUpdateSliderPosition) {
        CurrentPosition = theNewPosition;
    }
}