【问题标题】:How to get current page in my WP7 app如何在我的 WP7 应用程序中获取当前页面
【发布时间】:2011-03-02 03:14:23
【问题描述】:

有没有办法在我的 Windows Phone 7 应用程序中获取当前页面的活动实例?我一直在阅读文档并试图弄清楚它无济于事。

在我的示例中,我正在运行一个全局循环,它调用活动页面的公共方法。

例如,应用程序加载到Page1.xaml,如果我的循环在此页面处于活动状态时触发,我需要触发在 Page1 代码隐藏中找到的循环。如果 Page2 处于活动状态,我将需要在 Page2 代码隐藏文件中触发不同的方法。

注意:我在各个页面中的方法不能是静态的,因为我需要访问实例变量。所以我不仅需要活动页面(可以通过某种变量来实现),而且我需要当前页面的instance

【问题讨论】:

    标签: silverlight windows-phone-7


    【解决方案1】:

    您可以从根框架获取当前页面。项目中生成的默认App 类具有RootFrame 属性,该属性已经是PhoneApplicationFrame 类型。 Content 属性的值是当前页面,可以转换为PhoneApplicationPage

    var currentPage = ((App)Application.Current).RootFrame.Content as PhoneApplicationPage;

    Application 类上的RootVisual 属性引用了相同的框架,但它是一个UIElement,因此您可以改用以下内容:

    var currentPage = ((PhoneApplicationFrame)Application.Current.RootVisual).Content;

    【讨论】:

    • 使用这种技术,我将如何继续调用PhoneApplicationPage 中的方法?它不允许 currentPage.myMethod();
    • 您可以像调用任何其他类一样在结果页面上调用公共方法。要在您自己的页面上调用方法,您需要将结果转换为该特定类才能访问它的公共方法。
    • 我在这里遗漏了什么吗? var currentPage = ((App)Application.Current).RootFrame.Content as PhoneApplicationPage; currentPage = currentPage as Namespace.MyPage;
    【解决方案2】:

    您可以使用 NavigationService.CurrentSource http://msdn.microsoft.com/en-gb/library/system.windows.navigation.navigationservice.currentsource(v=VS.92).aspx 获取当前 XAML 页面 URL

    但是,要获取当前页面本身的实例,我认为您需要自己维护它 - 一种方法是从覆盖 OnNavigatedTo 的共享抽象类继承所有页面,然后以此为契机用单例记录自己(可能是你的 App 类)

    【讨论】:

      猜你喜欢
      • 2015-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多