代码之家  ›  专栏  ›  技术社区  ›  redwizard000

访问Silverlight页面上的函数和控件

  •  0
  • redwizard000  · 技术社区  · 12 年前

    我对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页上的subs和控件时,相同的代码不起作用。

    如果我尝试:

    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,但这似乎没有任何作用。

    我希望这个问题是由我对银光灯的无知造成的,并且有一个简单的解决方法。。。

    我想我需要做的是检测当前正在显示的页面,并操作该页面上的控件和函数\子例程。

    如有任何意见,将不胜感激。

    1 回复  |  直到 12 年前
        1
  •  0
  •   redwizard000    12 年前

    好吧,我终于想通了。或者至少我想出了一个办法。

    我使用字典来存储页面在内存中创建后的地址。我还修改了程序,使rootVisual成为自己的网格而不是页面。现在,网格将作为子级加载和清除页面。

    我不知道。。。Silverlight有点古怪。不管怎样,它现在起作用了。