Вы не должны, и не должны.
Модель представления не должна иметь представления о представлении *, не говоря уже о том, когда представление завершило выполнение анимации. Для ВМ абсолютно нормально иметь свойство IsDirty
, что с этим делает представление, и ВМ не нужно об этом знать. Однако вы должны проверить использование этого флага - общее использование означает, что данные находятся в измененном и несохраненном состоянии, когда анимация пользовательского интерфейса завершила работу, виртуальная машина все еще находится в грязном состоянии, поэтому вы не должны использовать этот флаг для переключения анимации при каждом изменении данных (вместо этого используйте обычное событие PropertyChanged ).
Edit:
Вот еще несколько уточнений в ответ на комментарий.
IsDirty означает, что пользователь должен быть уведомлен об изменении.
Существует множество способов уведомить пользователя об изменении данных. Это может быть одноразовое событие, например значок в области состояния, флэш-интерфейс и т. Д. Флаг IsDirty
должен сбрасываться только виртуальной машиной, поскольку виртуальная машина знает, когда измененные данные были сохранены. Представление дает вам кнопку (или что-то еще) для запуска механизма сохранения, оно фактически не знает, когда (или было ли) данные действительно были сохранены, поэтому следует, что представление не должно сбрасывать этот флаг. Вам не нужно, чтобы представление показывало, что уведомление завершено - вы можете отключить кнопки сохранения или другие элементы пользовательского интерфейса во время анимации, чтобы предотвратить взаимодействие пользователя с данными.
Если вы хотите уведомлять каждый каждый раз, когда данные изменяются, а затем реализовать интерфейс INotifyPropertyChanged, как упомянуто выше, вы можете выставить событие PropertyChanged
через интерфейс на ВМ, тогда представление может подписаться на и вы можете запустить анимацию для любых изменений свойств, которые вас интересуют. Вам нужно быть осторожным, чтобы ограничить скорость - вы не хотите сходить с ума от анимации в ответ на быстрые изменения свойств.
* Мне еще предстоит увидеть действительное использование виртуальной машины, которая знает и может манипулировать представлением и реагировать на него. Многие люди делают это, но это просто плохой дизайн, который заставляет их использовать этот подход.