MVVM как шаблон предназначен для разделения задач, улучшения тестируемости вашего кода и т. Д., Поэтому ваша ViewModel должна only заботиться о применении бизнес-правил и предоставлении данных для вашего View.
Вам нужно будет использовать это в сочетании с каким-то шаблоном MVC, когда контроллер контролирует навигацию / состояние приложения и т. Д.
(редактировать)
Например, представьте, что ваше приложение имеет экран входа в систему, поэтому вы создаете LoginView, которое содержит имя пользователя и пароль; вероятно кнопка ОК и кнопка Отмена.
Вы создаете класс LoginViewModel, чтобы связать это представление и обрабатывать логику входа в систему в этом классе.
Но после входа в приложение приложение ViewModel не несет ответственности за информацию о том, куда идти дальше; или какой вид будет отображаться следующим ... может быть, вы хотите перейти к последнему экрану, на котором был этот пользователь в прошлый раз, когда он вошел в систему? Может быть, он идет на экран по умолчанию, согласно профилю пользователя? Это решение не имеет ничего общего с функцией входа в систему ...
Итак, если вы создаете класс Controller, вы можете: создать экземпляр класса LoginViewModel, а затем, в зависимости от результата входа в систему, применить бизнес-правила, необходимые для удаления LoginViewModel из области действия, и создать новую ViewModel (например, HomePageViewModel) ) и т.д ...
Наконец, вам необходимо сообщить приложению, какие представления использовать для каждой виртуальной машины с использованием DataTemplates
Есть куча других способов снять кожу с этой конкретной кошки, конечно ... это всего лишь одна идея ...
Пока сохраняется основная концепция: используйте MVVM, чтобы ликвидировать разрыв между View и Model чистым, тестируемым способом ... не пытайтесь сделать так, чтобы «один шаблон подходил всем»:)
HTH:)