Допустим есть Window1, на нем есть Button. По нажатию на Button должно открываться новое окно Window2. Где это лучше сделать? Внутри Window1.xaml.cs(т.е добавить обработчик события), или лучше сделать для этого свойство ICommand в соответствующей ViewModel?
Первый вариант вроде неплохо смотрится, однако MVVM существует чтобы отделить логику от представления, но в этом варианте необходимо будет написать логику открытия окна внутри View.
Второй вариант тоже должен нарушать MVVM, ведь мы связываем ViewModel и View.
Есть ли какой-то "правильный" с точки зрения концепции MVVM способ открытия окон? Слышал про паттерн Messenger, но то ли это?