2014-09-02 35 views
0

我是Silverlight的新手,我遇到了一些問題。我一直試圖找出幾個小時現在...訪問Silverlight頁面上的函數和控件

我有一個主頁,等待從服務器的數據包。當數據包到達時,它將在模塊中處理。根據分組數據,模塊處理一個動作。其中一些操作涉及主頁面上的子例程。我通過訪問它們:

Dim MainPage As MainPage = App.Current.RootVisual 
If strPacketData(1) = "0" Then 
MainPage.Do_Sign_In(True, strPacketData(2)) 
Else 
MainPage.Do_Sign_In(False, strPacketData(2)) 
End If 

而且這工作正常。

假設在作品中的標誌主要頁面調用

Me.Content = New Page2 

和頁面切換到第2頁

的問題是,同樣的代碼不會試圖訪問第2頁潛艇和控制工作時。

如果我嘗試:

Dim Page2 As Page2 = App.Current.RootVisual 
If strPacketData(1) = "1" Then 
Page2.lblCreateError.Opacity = 100 
End If 

我得到無法投型 'SLClient.MainPage' 的對象鍵入 'SLClient.Page2'。

什麼我從這個越來越是App.Current.RootVisual設置爲炫魅,但不是的MainPage應該是開放的......

我試圖App.Current.RootVisual設置爲第2頁,但是那並不似乎沒有做任何事情。

我希望這個問題由我的Silverlight的無知造成的,並且有這個一個簡單的辦法......

我想我需要做的是檢測的目前所顯示的頁面和操作該頁面上的控件和函數\子例程。

任何輸入將不勝感激。

+0

我知道你已經找到了解決方法,但是你的RootVisual是你的MainPage,並且在它裏面,你有一個內容框架(導航控件),它顯示了Page2 in,是否正確?如果是這樣,MainPage將永遠是您的RootVisual。我所做的是在'ContentFrame_Navigated'事件中,我將'e.content'保存到一個公共變量中,所以我總是知道當前顯示哪個頁面。 – Steve 2014-09-03 22:57:44

+0

是的,我想這可能會奏效。 Silverlight正在讓我瘋狂......我記得想着這將是多麼容易......服務器應用程序!這將是困難的一部分!它必須管理所有連接並處理所有數據庫命令並跟蹤所有內容!但是......沒有服務器是迄今爲止最容易的部分。客戶端所要做的就是接收數據包並顯示數據。我從來沒有想過,我會看到創建異步套接字類的日子竟然比顯示圖像數組更容易。 - 很抱歉的咆哮。感謝您的迴應! -RW – redwizard000 2014-09-03 23:11:39

回答

0

好吧,我終於明白了。或者至少我想出了一個辦法。

我用一個字典來存儲頁面在內存中創建的地址。我還修改了程序,以便rootVisual是它自己的網格而不是頁面。現在網格加載並清除頁面作爲孩子。

我不知道... Silverlight是有點棘手。無論如何,它現在起作用。

相關問題