Скажем, в некотором абстрактном базовом классе ViewModel у меня есть свойство простого старого:
public Size Size
{
get { return _size; }
set
{
_size = value;
OnPropertyChanged("Size");
}
}
Затем я создаю более конкретную ViewModel, наследующую от предыдущей, которая содержит следующее свойство:
public Rect Rectangle
{
get { return new Rect(0, 0, _size.Width, _size.Height); }
}
Теперь в некотором классе View я привязываюсь к вышеупомянутому свойству ViewModel Rectangle
. Все отлично работает, пока не поменяю размер. Когда Size
изменяется, Rectangle
не знает об этом, и изменение не распространяется на представление. И так как Rectangle
находится в дочернем классе, я не могу просто добавить OnPropertyChanged("Rectangle")
к установщику Size
.
Теперь представьте, что у меня много разных свойств, таких как Rectangle
, все они зависят от свойств базового класса, и что ни одно из этих изменений не распространяется. Мне нужен какой-то легкий и элегантный способ создания цепочки уведомлений об изменениях, предпочтительно такой, который не требует большого количества кода и не заставляет меня использовать свойства зависимостей.
Очевидно, здесь есть много уродливых решений - я ищу что-то чистое и умное. Мне кажется, что это будет очень распространенный сценарий, и мне кажется, что это может быть MVVM-дружественный способ сделать это.