WPF MVVM取消窗口关闭

时间:2011-01-31 13:29:43

标签: .net wpf mvvm

我是WPF和MVVM的新手。我想最小化窗口而不是关闭窗口。换句话说,我想取消Closing窗口事件并最小化此窗口。

我应该怎样做MVVM方式?

如果相关,最后我会将ShowInTaskbar设置为false并使用WinForms托盘组件。

2 个答案:

答案 0 :(得分:9)

与MVVM的常见误解是,在视图中永远不会有代码隐藏。这根本不是真的。

MVVM的目标是最小化代码隐藏中的代码,但是对于直接与视图本身交互的东西(例如Windows事件),可以接受在一些代码隐藏中。代码隐藏将处理取消,并可以执行最小化,或在ViewModel中调用命令,或其他一些此类事情。

否则,您将不得不想出一个在ViewModel中处理事件的复杂系统,它通过让ViewModel引用View(而不是相反的方式)来打破MVVM模式。 / p>

答案 1 :(得分:1)

只需覆盖Closing事件并执行此操作:

e.Cancel = true;
this.ShowInTaskbar = false;
this.WindowState = WindowState.Minimized;