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

and*_*sra 25 silverlight windows-phone-7

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

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

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

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

Der*_*kin 38

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

var currentPage = ((App)Application.Current).RootFrame.Content as PhoneApplicationPage;
Run Code Online (Sandbox Code Playgroud)

RootVisual对房地产Application类引用同一个框架,但它是一个UIElement,所以你可以改用以下内容:

var currentPage = ((PhoneApplicationFrame)Application.Current.RootVisual).Content;
Run Code Online (Sandbox Code Playgroud)


Stu*_*art 5

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

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