0

Открывать окна я научился благодаря этому вопросу. Однако, закрывать окна правильно тоже нужно и для этого есть метод HidePresentation (см. в ответе по ссылке выше), но где мне вызывать этот метод? В овете есть пример закрытия, но это не то, что мне нужно, поскольку окна надо будет закрывать мышкой, а не в результате выполнения какого-то метода. У меня есть только два способа которые я придумал себе:

  1. Создать обработчик события Closing для самого окна и в нем вызвать метод HidePresentation
  2. Указать WindowStyle = "None", самостоятельно сделать кнопку закрытия и повесить на ICommand в которой так же вызывать метод HidePresentation.

Я сейчас придерживаюсь первого варианта поскольку для меня он намного проще, но честно говоря я так же сомневаюсь в этом способе, но не знаю почему. Так как же правильно закрывать окна для WPF с MVVM?

Aarnihauta
  • 2,326
  • 3
  • 12
  • 23
  • Как правильно закрывать окна в WPF MVVM? мышкой на крестик, либо окно должно само себя закрывать, когда поймет что больше не нужно. Централизованного управления быть не должно. – aepot Apr 07 '22 at 10:51
  • @aepot а зачем мне тогда контролировать открыто ли окно? – Aarnihauta Apr 07 '22 at 10:52
  • Используйте Closing. Операции с View должны быть во View, утаскивать их в VM слой ради того чтобы просто утаскивать - не стоит. – aepot Apr 07 '22 at 10:56
  • @Aarnihauta а зачем мне тогда контролировать открыто ли окно? - а это все зависит от того, что именно вам надо и в каком виде. Многие проекты делают так, что при закрытии диалога, возвращается некий калбек, некое событие о том, что окно закрылось, внутри которого содержится тип закрытия (крестик, по кнопке, программно например) и необходимые возвращаемые свойства. Ну а для того, чтоб это все сделать, нужно конечно событие закрытия. Я вам советую посмотреть это видео, где автор библиотеки Prism рассказывает базовый принцип диалогов, включая их закрытие. – EvgeniyZ Apr 07 '22 at 14:04

0 Answers0