Silverlight停止页面在保存之前关闭

时间:2010-02-18 20:46:37

标签: silverlight user-controls save

在WinForms的旧时代,如果您的用户在DialogBox中创建/编辑某些信息,很容易检测到窗口关闭,如果数据是脏的,请询问他们是否要保存。

我的问题是,你如何在Silverlight中处理这种情况,其中一切似乎都是在UserControls中完成的,它没有明显的方法知道页面何时关闭,即切换到Silverlight应用程序中的另一个页面只会打开一个不检查以前需要保存的UserControl的不同UserControl。

必须有一些标准的方法来实现这个目标吗?

3 个答案:

答案 0 :(得分:2)

您可以处理Application.Exit事件以在应用程序关闭时执行代码。请注意,此时网络堆栈已关闭,因此您无法从Application.Exit发送任何消息。你无法取消活动。

答案 1 :(得分:2)

如果您需要询问用户是否保存的问题,那么您需要在浏览器onbeforeunload处理此问题(虽然不是标准事件,但是Silverlight所在的浏览器支持官方支持)。当onbeforeunload触发时,可以设置一个小的javascript来回调你的应用程序。

那就是说我不喜欢“你确定,你想要失去你刚刚完成的所有工作”这类问题。 “我当然不想失去它,只要我已经可以撤消它,只要我必须在以后撤消它,我很高兴。”

答案 2 :(得分:1)

+1迈克尔。这是SL的当前限制。但是,您可以坚持从应用程序退出事件中隔离存储,是否可以在您的应用程序中检查是否脏,以及是否可以保存到iso存储。然后,下次加载应用程序时,您可以从iso存储中加载脏数据,以便进行编辑..?