开发者

How to get current page in my WP7 app

Is there a way to get the active instance of the current page in my Windows Phone 7 app? I have been reading documentation and trying to figure it out to no avail.

In my example I am running a global loop which calls a public method of the active page.

For example, the application loads to Page1.xaml, if my loop fires with this page active I need to fire a loop found in the Page1 code-behind. If Page2 is active I will need to be firing a different method in the Page2 code-behind file.

NOTE: My methods in th开发者_如何学运维e individual pages cannot be static because I require access to instance variables. So not only do I need the active page (which could be achieved through a variable of some sort), but I need the instance of the current page.


You can get the current page from the root frame. The default App class that is generated in the project has a RootFrame property that is already of type PhoneApplicationFrame. The value of the Content property is the current page and can be cast to PhoneApplicationPage.

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

The RootVisual property on the Application class references the same frame, but is a UIElement, so you could use the following instead:

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


You can get the current XAML page URL using NavigationService.CurrentSource http://msdn.microsoft.com/en-gb/library/system.windows.navigation.navigationservice.currentsource(v=VS.92).aspx

However, to get the instance of the current page itself I think you'll need to maintain this yourself - one way would be to inherit all your pages from a shared abstract class which overrides OnNavigatedTo and then uses this as an opportunity to record itself with a singleton (maybe your App class)

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜