Как получить текущую страницу в моем приложении WP7 - PullRequest
25 голосов
/ 02 марта 2011

Есть ли способ получить активный экземпляр текущей страницы в моем приложении для Windows Phone 7? Я читал документацию и пытался понять это безрезультатно.

В моем примере я запускаю глобальный цикл, который вызывает открытый метод активной страницы.

Например, приложение загружается в Page1.xaml, если мой цикл срабатывает с активной страницей, мне нужно запустить цикл, найденный в коде сзади Page1. Если Page2 активна, мне нужно будет запустить другой метод в файле кода кода Page2.

ПРИМЕЧАНИЕ. Мои методы на отдельных страницах не могут быть статичными, поскольку мне требуется доступ к переменным экземпляра. Поэтому мне нужна не только активная страница (что может быть достигнуто с помощью некоторой переменной), но и экземпляр текущей страницы.

Ответы [ 2 ]

38 голосов
/ 02 марта 2011

Вы можете получить текущую страницу из корневого фрейма. Класс App по умолчанию, сгенерированный в проекте, имеет свойство RootFrame, которое уже имеет тип PhoneApplicationFrame. Значение свойства Content является текущей страницей и может быть приведено к PhoneApplicationPage.

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

Свойство RootVisual класса Application ссылается на тот же фрейм, но является UIElement, поэтому вместо него можно использовать следующее:

var currentPage = ((PhoneApplicationFrame)Application.Current.RootVisual).Content;
5 голосов
/ 02 марта 2011

Вы можете получить текущий URL-адрес страницы XAML, используя NavigationService.CurrentSource http://msdn.microsoft.com/en-gb/library/system.windows.navigation.navigationservice.currentsource(v=VS.92).aspx

Однако, чтобы получить экземпляр самой текущей страницы, я думаю, вам нужно будет поддерживать это самостоятельно - одним из способов будетнаследовать все ваши страницы от общего абстрактного класса, который переопределяет OnNavigatedTo, а затем использует это как возможность записать себя с помощью одиночного (возможно, класса вашего приложения)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...