2014-08-27 186 views
2

我们正在使用Caliburn.Micro框架开发带有在Web浏览器中运行的XBAP部件的WPF应用程序。如何防止在Web浏览器中关闭XBAP浏览器应用程序

实现和部署没有问题,除非有一个要求是,应用程序不应允许用户在活动窗口上修改某些数据时立即关闭它,并且用户没有按下保存。

在桌面应用程序中,重写Caliburn的CanClose方法本身就是Window.Closing回调的一部分,这很简单。此回调被执行并且可以根据需要设置CancelEventArgs.Cancel。

在XBAP应用程序中,Application.Current.MainWindow是RootBrowserWindow,当它关闭和关闭事件订阅时,即使回调是静态方法,也不会调用这些事件(我正在修改Caliburn.Micro代码以进行测试)。

我的问题是如何防止在用户试图关闭标签或整个浏览器窗口时,在Internet Explorer中运行的WPF XBAP浏览器应用程序关闭?应用程序信任不是问题,因为我们可以(也将)要求客户完全信任该应用程序。

+0

你的意思是XBAP浏览应用程序?的ClickOnce应用程序是桌面应用程序... – 2014-08-27 20:55:18

+0

@DeanK是的,他这样做,否则他就不会被处理的资源管理器和这些问题:) – 2014-08-27 21:12:28

+1

对不起我肯定意味着XBAP浏览器应用程序。 – too 2014-08-28 10:56:58

回答

1

对不起,我不知道,IExplorer的限制。您甚至不允许检查您的窗口是否最小化,甚至在XBAP应用程序中不允许某些关键组合。 Fulltrust与否,IE的问题:(

我同样的问题,你约3-4年前thinkered,+键绑定一些,做了很多的互操作的东西,都无济于事从我的记忆。

干杯

了Stian

+1

我在考虑使用JavaScript并在另一个选项卡中打开XBAP,同时保持“警卫”选项卡打开并监听window.onbeforeunload(如果可能)。 XBAP应用程序访问IE浏览器选项卡的IHTMLDocument的目标似乎无法达到,正如你所提到的,没有太多的互操作性。 – too 2014-08-28 11:06:51

+1

@too来自XBAP,WPF和SL老手的建议。将它们全部废弃(XBAP)!某些第三方供应商已经停止支持它。即使我喜欢WPF和SL,我也不会自愿创建一个XBAP应用程序。那里有更好的跨平台解决方案。呃,只是PresentationHost.exe这个词给了我恶梦;)旧的失败的技术,ActiveX 2.0:/。对于你关于互操作性的问题,即使在这里,你在很多领域都被阻塞了。 – 2014-08-28 14:36:37

+1

我将使用XBAP部署Windows应用程序,除了我们的主要桌面应用程序(我已经通过XBAP发布版本控制问题,它确实是使其工作并自动更新的确实是一场噩梦)之外,不需要为用户方便进行安装。你有什么跨平台解决方案?我们只需要支持Windows。 – too 2014-08-29 09:11:40