gpt4 book ai didi

wpf - 检测应用程序退出以及未保存更改时如何停止

转载 作者:行者123 更新时间:2023-12-04 06:57:36 24 4
gpt4 key购买 nike

使用 Microsoft 的 Composite Application Guidance 工具,似乎没有机制允许您查询模块 ViewModel 并询问其中是否有未保存的数据。这是一个问题,因为我也对此感到内疚,当有未保存的数据时,您无法阻止应用程序终止......

我曾考虑过创建一个名为 IApplicationEvents 的接口(interface),并在那里有一个名为 ApplicationExiting 的事件。想法是每个模块都可以订阅事件,并且在触发时可以发回“Cancel=true”或“Cancel=false”来说明是否允许应用程序退出。

很想知道其他人在这种情况下可能做了什么,并想看看社区中有哪些可能的解决方案来解决这个问题。

谢谢。

最佳答案

这里有很多选择。

首先,我想澄清一点命名法...通常是您的 包含在模块程序集中的 View 或 View 模型是未保存更改的东西,而不是模块本身 . Module 负责在开始时实例化任何必要的 View ,并在 Initialize 期间回馈给 shell,通常就是这样,所以当你解决这个问题时,你需要专注于你的 View / View 模型而不是 Module 类。

我脑海中的选项:

  • 采用像 Caliburn 这样的免费框架 它支持这样的应用程序事件(以及一些 MDI 事件,如 ViewClosing 之类的)。它内置了对 Prism ( http://caliburn.codeplex.com/ )
  • 的支持
  • 使用复合命令 .您的 View 或 View 模型将在其他地方使用复合命令(CloseCommand,您为您的应用程序静态声明)注册自己,并且每个打开的 View 都将触发其 CanExecute 和 Execute 方法,以便您可以在关闭应用程序时投票并使用react对它,它是否应该发生。 CompositeCommands 是 Prism 的一项功能。 (见:Commanding Quickstart)

  • 我认为这些可能是最优雅的。还有更多选择,但这些选择与现有约定最和谐。

    希望这可以帮助。

    关于wpf - 检测应用程序退出以及未保存更改时如何停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2359983/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com