Wpf 如何防止XBAP浏览器应用程序在web浏览器中关闭

Wpf 如何防止XBAP浏览器应用程序在web浏览器中关闭,wpf,clickonce,caliburn.micro,xbap,Wpf,Clickonce,Caliburn.micro,Xbap,我们正在开发一个WPF应用程序,其中一个XBAP部件在web浏览器中运行,两者都使用Caliburn.Micro框架 实现和部署没有问题,只是有一个要求,即当活动窗口上的某些数据被修改且用户未按保存时,应用程序不应允许用户立即关闭它 在桌面应用程序中,重写Caliburn的CanClose方法很容易,因为CanClose方法本身就是Window.Closing回调的一部分。将执行此回调并取消EventArgs。如有必要,可以设置Cancel 在XBAP应用程序中,application.Curr

我们正在开发一个WPF应用程序,其中一个XBAP部件在web浏览器中运行,两者都使用Caliburn.Micro框架

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

在桌面应用程序中,重写Caliburn的CanClose方法很容易,因为CanClose方法本身就是Window.Closing回调的一部分。将执行此回调并取消EventArgs。如有必要,可以设置Cancel

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


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

据我所知,很抱歉,您不能,IExplorer限制。您甚至不允许检查您的窗口是否最小化,甚至某些组合键在XBAP应用程序中也不允许。是否完全信任,即问题:(

大约3-4年前,我和你思考过同样的问题,+一些键绑定,做了很多互操作的东西,从我记忆中看毫无用处

干杯


Stian

你是说XBAP浏览器应用程序吗?ClickOnce应用程序是桌面应用程序…@DeanK。是的,他会,或者他不会处理资源管理器和这些问题:)对不起,我当然是指XBAP浏览器应用程序。我正在考虑使用JavaScript并在另一个选项卡中打开XBAP,同时保持“guard”选项卡打开并在卸载前收听window.on(如果可能的话)。如果没有你提到的大量互操作,XBAP应用程序访问IE guard tab的IHTMLDocument的目标似乎是不可能实现的。@这也是XBAP、WPF和SL老手的建议。一起放弃它(XBAP)!某些第三方供应商已停止支持它。尽管我喜欢WPF和SL,但我不会自愿创建XBAP应用程序。还有更好的跨平台解决方案。uhh仅PresentationHost.exe一词就让我噩梦;)旧的失败技术,ActiveX 2.0:/。至于你关于互操作的问题,即使在这里,你也会在很多方面被阻止。除了我们的主桌面应用程序外,为了方便用户,我将使用XBAP部署windows应用程序,而不安装它(我已经遇到了XBAP发布版本控制问题,让它工作并自动更新确实是一场噩梦)。您心目中的跨平台解决方案是什么?我们只需要支持Windows。@太好了,他告诉我吧!:)我们一直在使用LOB应用程序,它们都有标准的WPF版本和XBAP版本。这一切都取决于你的应用程序要做什么?它有多大?对于网页内容,html5和js毫无疑问。对于桌面,您仍然可以继续运行WPF=)这只是我的观察和体验。它是一个相当复杂的应用程序,有多个选项卡,每个选项卡都有多个相互连接的视图,并且最多可以同时从上到下显示两个最新的视图。它具有更改后基于消息的更新以及所有异步WCF查询。一个使web难以实现的重要需求是丰富的文档编辑(图像、向量、公式)。我想我会努力解释使用XBAP的人不关闭浏览器,否则他们的数据会消失:)或者替他们想想,定期保存,这样在重新启动后可以显示“恢复编辑”对话框。