Sam*_*Sam 5 prism shutdown mvvm application-shutdown
所以我让我的prism/mvvm/mef程序运行良好,用户在应用程序中输入数据,然后关闭应用程序(或关闭计算机).
如何通知程序关闭/计算机关闭的View(模型),以便它可以保存用户数据,也可以询问是否应保存这些数据?
关闭程序关闭的数据肯定是要避免的,并且在用户的每个按键上保存内容是没有意义的.
我公开了客户可以注册的有趣全局"事件"的CompositeCommands,例如
public static class HostCommands
{
private static readonly CompositeCommand Shutdown = new CompositeCommand();
public static CompositeCommand ShutdownCommand
{
get { return Shutdown; }
}
}
Run Code Online (Sandbox Code Playgroud)
我在shell中触发shutdown命令,例如
public Shell()
{
InitializeComponent();
Closing += (sender, e) =>
{
if (HostCommands.ShutdownCommand.CanExecute(e))
HostCommands.ShutdownCommand.Execute(e);
};
}
Run Code Online (Sandbox Code Playgroud)
客户可以注册如下,例如
public SomeViewModel(IEventAggregator eventService)
{
//blah, blah, blah...
HostCommands.ShutdownCommand.
RegisterCommand(new DelegateCommand<object>(_ => Save()));
}
Run Code Online (Sandbox Code Playgroud)
更新
我不处理取消方案,但您可以通过传递给命令的对象来实现.例如,在上面的代码中,我传入一个客户可以操作的CancelEventArgs,即设置Cancel = true.在命令执行后我可以在我的Shell关闭事件处理程序中检查此值,以获取是否应该取消关闭shell.可以扩展此模式.
| 归档时间: |
|
| 查看次数: |
2182 次 |
| 最近记录: |