Если у нас есть свойство, которое зависит от другого свойства (изменение первого обновления обновлений второго), у нас есть два способа сделать это. Мы можем заставить Dependent
получить только и позвонить RaiseOnPropertyChanged(nameof(Dependent))
. Или мы можем сделать Dependent
с полем поддержки и вместо этого просто присвоить это значение зависимому свойству DependentProperty = newValue
. Какой путь более MVVM?
class Approach1 : INotifyPropertyChanged {
private object _primary;
public object Primary {
get { return _primary; }
set {
if(_primary != value) {
_primary = value;
RaiseOnPropertyChanged(nameof(Dependent));
}
}
public object Dependent {
get { return computeValue(); }
}
private object computeValue() { ... }
}
Второй подход:
class Approach2 : INotifyPropertyChanged {
private object _primary;
public object Primary {
get { return _primary; }
set {
if(_primary != value) {
_primary = value;
RaiseOnPropertyChanged();
Dependent = computeValue();
}
}
private object _dependent;
public object Dependent {
get { return _dependent; }
private set { if(_dependent != value) {
Dependent = value;
RaiseOnPropertyChanged();
}
}
private object computeValue() { ... }
}