如何在我的WP7应用程序中获取当前页面

时间:2011-03-02 03:14:24

标签: silverlight windows-phone-7

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

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

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

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

2 个答案:

答案 0 :(得分:38)

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

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

RootVisual类的Application属性引用相同的框架,但是UIElement,因此您可以使用以下代码:

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

答案 1 :(得分:5)

您可以使用NavigationService.CurrentSource http://msdn.microsoft.com/en-gb/library/system.windows.navigation.navigationservice.currentsource(v=VS.92).aspx

获取当前的XAML页面网址

但是,要获取当前页面本身的实例,我认为您需要自己维护 - 一种方法是从共享的抽象类继承所有页面,该类覆盖OnNavigatedTo然后将其用作机会使用单例(也许是您的App类)记录自己