我是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
页面切换到Page2
问题是尝试访问第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,但MainPage不应该打开...
我已尝试将App.Current.RootVisual设置为Page2,但似乎没有做任何事情。
我希望这个问题是由于我对Silverlight的无知造成的,并且有一个简单的解决办法......
我想我需要做的是检测当前正在显示哪个页面并操作该页面上的控件和函数\子例程。
非常感谢任何输入。
答案 0 :(得分:0)
好吧我终于明白了。或者至少我想出了一种方法。
在内存中创建页面时,我使用字典来存储页面的地址。我还修改了程序,以便rootVisual是它自己的网格而不是页面。现在网格加载并清除页面为子项。
我不知道...... Silverlight有点棘手。无论如何,它现在都有效。