WPF MVVM отменить закрытие окна - PullRequest
2 голосов
/ 31 января 2011

Я новичок в WPF и MVVM. Я хотел бы свернуть окно, а не закрывать его. Другими словами, я хотел бы отменить Closing событие окна и свернуть это окно.

Как мне это сделать MVVM?

Если это уместно, в конце я установлю ShowInTaskbar на false и использую компонент лотка WinForms.

Ответы [ 2 ]

9 голосов
/ 31 января 2011

Распространенное недоразумение с MVVM заключается в том, что в представлении никогда не может быть когда-либо кода. Это просто неправда.

Цель MVVM состоит в том, чтобы минимизировать код в выделенном фрагменте кода, но для вещей, которые непосредственно взаимодействуют с самим представлением (например, события Windows), допустимо поместить в некоторый код позади . Выделенный код обрабатывает Cancel и может свести к минимуму или вызвать команду во ViewModel или что-то подобное.

В противном случае вам придётся придумать сложную систему обработки события в ViewModel, которая нарушает шаблон MVVM, поскольку ViewModel имеет ссылку на View (а не наоборот).

1 голос
/ 31 января 2011

Просто переопределите событие закрытия и сделайте следующее:

e.Cancel = true;
this.ShowInTaskbar = false;
this.WindowState = WindowState.Minimized;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...