【问题标题】:WPF MVVM Override X button [duplicate]WPF MVVM覆盖X按钮[重复]
【发布时间】:2020-11-13 11:49:49
【问题描述】:

有什么方法可以在 MVVM 方式中覆盖应用程序的 X(红十字)按钮?

我希望该按钮隐藏托盘中的窗口(我已经配置了托盘图标),但不知道如何以正确的方式隐藏窗口。

【问题讨论】:

  • 您可以使用WindowChrome 自定义您的窗口,并将任何命令绑定到关闭按钮,而不会违反任何 MVVM 规则

标签: c# wpf mvvm


【解决方案1】:

您需要重写OnClosing() 方法。

这是我的MainWindow 代码,您可以将它放在主窗口的任何位置。

protected override void OnClosing(CancelEventArgs e)
{
    e.Cancel = true;
    Hide();
    base.OnClosing(e);
}

e.Cancel = true 在这里是相关的,因为将 Cancel 设置为 true 会取消关闭请求,因此应用程序实际上并没有关闭。

编辑

我刚刚注意到您的帖子说 in MVVM way,我假设您的意思是在您的 View Model? 中编写代码?如果是这种情况,MVVM 模式并不要求您在代码隐藏中编写零代码。 MVVM 的想法是将View、Model 和ViewModel 解耦,但在必要时仍然允许您使用这样的代码。可以这么说,它不会违反任何MVVM 规则。

【讨论】:

  • 但是它破坏了 mvvm 模式,不是吗?编辑好的,我明白了,谢谢
猜你喜欢
  • 2011-03-18
  • 2014-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-24
相关资源
最近更新 更多