我是WPF和MVVM的新手。我想最小化窗口而不是关闭窗口。换句话说,我想取消Closing
窗口事件并最小化此窗口。
我应该怎样做MVVM方式?
如果相关,最后我会将ShowInTaskbar
设置为false
并使用WinForms托盘组件。
答案 0 :(得分:9)
与MVVM的常见误解是,在视图中永远不会有代码隐藏。这根本不是真的。
MVVM的目标是最小化代码隐藏中的代码,但是对于直接与视图本身交互的东西(例如Windows事件),可以接受在一些代码隐藏中。代码隐藏将处理取消,并可以执行最小化,或在ViewModel中调用命令,或其他一些此类事情。
否则,您将不得不想出一个在ViewModel中处理事件的复杂系统,它通过让ViewModel引用View(而不是相反的方式)来打破MVVM模式。 / p>
答案 1 :(得分:1)
只需覆盖Closing事件并执行此操作:
e.Cancel = true;
this.ShowInTaskbar = false;
this.WindowState = WindowState.Minimized;