Скажем, в каком-то абстрактном базовом классе ViewModel у меня есть свойство plain-old следующим образом:
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.