0

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

Первый вариант вроде неплохо смотрится, однако MVVM существует чтобы отделить логику от представления, но в этом варианте необходимо будет написать логику открытия окна внутри View.

Второй вариант тоже должен нарушать MVVM, ведь мы связываем ViewModel и View.

Есть ли какой-то "правильный" с точки зрения концепции MVVM способ открытия окон? Слышал про паттерн Messenger, но то ли это?

Aarnihauta
  • 2,326
  • 3
  • 12
  • 23
  • С точки зрения MVVM окон вообще не существует. А потому приходится изобретать свое разной степени удобства. И все способы правильные, если выполняется одно условие - вьюмодель не имеет прямой зависимости на окна. – vitidev Nov 12 '21 at 08:39
  • Мы у себя вообще не делаем новых окон. А просто на передний план выводим слой, напоминающий окно. Пишем UserControl с крестиком закрытия и его и отображаем, управляя свойством Visibility, например. – dmitriy Nov 12 '21 at 09:01
  • Прилинковал дубликат, и еще сюда загляние. – aepot Nov 12 '21 at 09:39
  • @aepot хорошо, спасибо – Aarnihauta Nov 12 '21 at 09:42

0 Answers0