Скажем, в какой-то абстрактный ViewModel базового класса У меня есть набившие оскомину свойство следующим образом:Уведомление об изменении в MVVM иерархий
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 Я связываю к Rectangle
собственности вышеупомянутого ViewModel в. Все работает нормально, пока я не изменю размер. Когда Size
изменяется, Rectangle
не знает об этом, и изменение не распространяется на представление. А так как Rectangle
находится в дочернем классе, я не могу просто добавить OnPropertyChanged("Rectangle")
в сеттер Size
.
Теперь представьте, что у меня много разных свойств, таких как Rectangle
, что все зависит от свойств базового класса и что ни одно из этих изменений не распространяется. Мне нужен легкий и элегантный способ связывания уведомлений об изменениях, желательно тот, который не требует большого количества кода и не заставляет меня использовать свойства зависимостей.
Очевидно, что здесь есть много уродливых решений - я ищу что-то чистое и умное. Мне кажется, что это будет очень распространенный сценарий, и мне кажется, что может быть MVVM-friendly способ сделать это.
Отличная идея. Я немного изменил его, чтобы создать словарь во время построения (по соображениям производительности), но концепция звуковая. – Charlie