2014-08-27 189 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