В «чистом» MVVM ViewModel не должен ссылаться на View. Тем не менее, часто бывает удобно предоставить интерфейс вида в представлении, с помощью которого ViewModel может взаимодействовать с ним.
Однако я обнаружил, что почти никогда не делаю этого больше. Альтернативный подход заключается в использовании какой-либо формы присоединенного свойства или смешанного поведения в вашем представлении и его привязке к свойствам ViewModel. Это позволяет вам сохранить логику просмотра на 100% в представлении. Кроме того, создавая поведение для этого, вы создаете тип для повторного использования , который можно использовать для обработки этого в каждом взаимодействии ViewModel-> View. Я настоятельно предпочитаю этот подход, чем иметь какую-либо логику View в ViewModel.
Чтобы продемонстрировать эту технику, я написал образец для галереи кодов выражений под названием WindowCloseBehavior . Он демонстрирует, как вы можете использовать поведение в представлении, привязанном к свойствам в модели представления, для управления жизненным циклом окна, включая предотвращение его закрытия и т. Д.