由于绑定,ValueChanged事件正在发生?

时间:2014-06-30 06:13:32

标签: c# wpf

在我的WPF项目中,我有一个带有Value="{Binding Path=. . .}" ValueChanged=" . . ."

的滑块控件

在这个ValueChanged的事件处理程序方法中,我想了解当前事件是由用户移动滑块还是Value="{Binding Path=. . .}"的结果。

我怎么能理解这个?

更新:目标:

我有一组复选框,通过检查其中的任何一个,会在编号中添加一些内容。用户也可以使用Slider更改号码。滑块和复选框应该反映彼此的变化。

ValueChanged的事件处理程序方法负责对复选框进行集合检查,Value="{Binding Path=. . .}"负责反映 number 的更改,这些更改最初来自复选框。

谢谢。

1 个答案:

答案 0 :(得分:0)

我不确定我理解你的问题。如果您想知道用户或绑定是否更改了值:

RoutedPropertyChangedEventArgs.Source将始终是滑块。所以你必须自己做。

假设您绑定了Value(只需添加一个布尔值):

    private bool valueChangedByUser = false;
    private double value = 5;
    public double Value
    {
        get 
        { 
            return value; 
        }
        set 
        { 
            valueChangedByUser = true;  
            this.value = value; 
            OnPropertyChanged("Value"); 
        }
    }

当您更改代码中的值时,只需将valueChangedByUser设置为false。

    private void ValueChanged(object sender, System.Windows.RoutedPropertyChangedEventArgs<double> e)
    {
        if (valueChangedByUser)
        {
            /* Value was changed by user */
        }
        else
        {
            /* Value was not changed by user */
        }
    }