基于属性更新另一个属性,反之亦然

时间:2012-05-17 04:11:52

标签: wpf dependency-properties inotifypropertychanged

我的问题是我在WPF应用程序中有三个相互依赖的属性。我也为这个类实现了InotifyPropertyChanged。我不知道如何根据其他属性更新第二个属性。

示例:

属性:ActualValue,ChangedValue,Change

ActualValue已修复,可以更新ChangedValue和Change。这意味着如果我更新ChangedValue,则更改的计算方式与(ActualValue-ChangedValue)相同并设置。当Change更新时,ChangedValue将根据ActualValue和Change。

计算

1 个答案:

答案 0 :(得分:1)

您可以将逻辑放在其他人所依赖的属性的setter中。因为它是循环依赖,所以只需确保在setter中更改私有变量 - 不要使用属性setter,因为这将创建一个无限循环。像这样:

private string _change, _changedValue;

public string ChangedValue {
    set { 
        _changedValue = value;
        _change = ActualValue - _changedValue;
        NotifyPropertyChanged("ChangedValue");
        NotifyPropertyChanged("Change");
    }
}


public string Change {
    set { 
        _change = value;
        _changedValue = ActualValue - _change;
        NotifyPropertyChanged("Change");
        NotifyPropertyChanged("ChangedValue");
    }
}