Конечно MVVM можно реализовывать и с нуля, но проще взять готовый фреймворк, в котором реализованы, навигация, DI/IoC, MessageBus. И грубо говоря, указывая навигатору переход на экран, он сам берет из DI контейнера вьюмодель, находит представление, делает привязку. Caliburn, Prism, самые популярные.