有没有办法在我的Windows Phone 7应用中获取当前页面的活动实例?我一直在阅读文档并试图弄明白无济于事。
在我的示例中,我正在运行一个全局循环,它调用活动页面的公共方法。
例如,应用程序加载到Page1.xaml
,如果我的循环触发此页面处于活动状态,我需要触发在Page1代码隐藏中找到的循环。如果Page2处于活动状态,我将需要在Page2代码隐藏文件中触发一个不同的方法。
注意:我在单个页面中的方法不能是静态的,因为我需要访问实例变量。因此,我不仅需要活动页面(可以通过某种变量实现),而且还需要当前页面的实例。
答案 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类)记录自己