Другое решение, предложенное Робертом Росни в этом вопросе:
WPF INotifyPropertyChanged для связанных свойств только для чтения
Вы можете создать карту зависимостей свойств (используяего примеры кода):
private static Dictionary<string, string[]> _DependencyMap =
new Dictionary<string, string[]>
{
{"Foo", new[] { "Bar", "Baz" } },
};
и затем сделайте это в своем OnPropertyChanged:
PropertyChanged(this, new PropertyChangedEventArgs(propertyName))
if (_DependencyMap.ContainsKey(propertyName))
{
foreach (string p in _DependencyMap[propertyName])
{
PropertyChanged(this, new PropertyChangedEventArgs(p))
}
}
Вы можете даже прикрепить атрибут, чтобы связать зависимое свойство с тем, от которого оно зависит.Что-то вроде:
[PropertyChangeDependsOn("Foo")]
public int Bar { get { return Foo * Foo; } }
[PropertyChangeDependsOn("Foo")]
public int Baz { get { return Foo * 2; } }
Я еще не реализовал детали атрибута.Я бы лучше занялся этим сейчас.