2009-11-13 75 views
1

我試圖找到一個權威的「不」,但一直不成功。理想情況下,我想讓我的Silverlight應用程序典當其他窗口。我不是說限制在主機Silverlight窗口邊界的ChildWindows,而是一個真正獨立的窗口,甚至可以出現在任務欄中。在WPF中,您使用System.Windows.Window及其屬性(例如ShowInTaskbar);但是,Silverlight無法使用該類。是否有可能在Silverlight應用程序中產生一個真正獨立的窗口?

理想情況下,我的應用程序會產生單獨的窗口,就像Outlook打開聯繫人或約會的完整詳細信息時一樣。我不想要一個單獨的瀏覽器窗口託管Silverlight應用程序的單獨視圖(理論上,這可以通過一些棘手的DOM級別的JavaScript窗口間通信)。

我認爲這是Silverlight的計算限制之一。但是在我放棄之前,我想從其他人那裏聽到,不,我不能產生一個單獨的頂層窗口。

回答

1

不,你不能產生一個單獨的頂層窗口。

您可以做的最好的方法是使用HyperlinkBut​​ton打開包含另一個Silverlight插件的新瀏覽器窗口。

+0

謝謝你覈實我的懷疑! – Trinition 2009-11-16 15:54:04

3

您可以打開另一個瀏覽器窗口(通過JavaScript調用),該窗口包含相同的XAP並使Silverlight應用程序在啓動時確定應該顯示哪個視圖。這個新的子窗口和主窗口之間的通信不會通過DOM級別的JavaScript來完成,而是通過Local Messaging來完成,這非常簡單易用。

+0

這很有趣,我一定會研究這一點。謝謝! – Trinition 2009-11-16 15:53:10

0

我還沒有理由嘗試它,但您可以嘗試在託管主應用程序的瀏覽器內部創建其他Silverlight控件。

Microsoft擁有一個Silverlight.js庫,使您可以輕鬆地使用Javascript將Silverlight控件添加到HTML DOM中。

您可以在HTML文檔中爲窗口浮動DIV,或者使用簡單的選項卡控件(例如Jquery Tabs)。動態添加選項卡看起來很容易。

這可能是最接近你有多個「窗口」,它仍然會覺得像一個不錯的,現代的網絡應用程序。不過,我會做一些仔細的性能測試,特別是如果你的XAP文件很大。

0

我不認爲在一個silverlight應用程序中產生單獨的窗口是不可能的。

你可以用多個小的xap文件構建你的應用程序,例如使用Prism。這會使初始下載更小,並使您能夠在不同的瀏覽器窗口中顯示部分。

從代碼顯示一個單獨的browsor窗口非常容易。看看System.Windows.Browser。最後,所有你需要的是這樣的打開一個新窗口:

HtmlPage.PopupWindow(new Uri("http://localhost/Email.xap?showmessage=1234"), 
        "_blanc", new HtmlPopupWindowOptions()); 
相關問題