2011-03-02 56 views
25

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

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

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

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

回答

38

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

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

RootVisual财产上的Application类引用同一个框架,但它是一个UIElement,所以你可以改用以下:

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

使用这种技术,我将如何继续调用方法在PhoneApplicationPage中?它不允许currentPage.myMethod(); – andersra 2011-05-13 05:28:26

+1

您可以使用与任何其他课程相同的方式在结果页面上调用公共方法。要在你自己的页面上调用方法,你需要将结果转换为特定的类,以便能够访问它的公共方法。 – 2011-05-13 06:31:41

+0

我在这里错过了什么吗? 'var currentPage =((App)Application.Current).RootFrame.Content as PhoneApplicationPage; currentPage = currentPage as Namespace.MyPage;' – andersra 2011-05-14 21:01:27

相关问题