gpt4 book ai didi

mvvm - 通知 View(Models) 关闭程序

转载 作者:行者123 更新时间:2023-12-04 17:58:06 27 4
gpt4 key购买 nike

所以我让我的 Prism/mvvm/mef 程序运行良好,用户在应用程序中输入数据,然后关闭应用程序(或关闭计算机)。

如何在程序关闭/计算机关闭时通知我的 View (模型),以便它可以保存用户数据或询问是否应该保存这些数据?

在程序关闭时丢失数据绝对是要避免的,并且在用户的每一次按键上都保存内容是没有意义的。

最佳答案

我公开了 CompositeCommands,客户端可以注册到有趣的全局“事件”,例如

public static class HostCommands
{
private static readonly CompositeCommand Shutdown = new CompositeCommand();

public static CompositeCommand ShutdownCommand
{
get { return Shutdown; }
}
}

我在我的 shell 中触发了关闭命令,例如
public Shell()
{
InitializeComponent();

Closing += (sender, e) =>
{
if (HostCommands.ShutdownCommand.CanExecute(e))
HostCommands.ShutdownCommand.Execute(e);
};
}

客户可以按如下方式注册,例如
public SomeViewModel(IEventAggregator eventService)
{
//blah, blah, blah...

HostCommands.ShutdownCommand.
RegisterCommand(new DelegateCommand<object>(_ => Save()));
}

更新

我不处理取消场景,但您可以通过传递给命令的对象来实现它。例如,在上面的代码中,我传入了一个 CancelEventArgs,客户端可以通过设置 Cancel=true 来操作它。在命令执行后,我可以在我的 Shell 关闭事件处理程序中检查这个值,以确定我是否应该取消关闭 shell。这种模式可以扩展。

关于mvvm - 通知 View(Models) 关闭程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4459247/

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