Как получить текущую страницу в моем приложении WP7
Есть ли способ получить активный экземпляр текущей страницы в моем приложении Windows Phone 7? Я читаю документацию и пытаюсь понять это безрезультатно.
В моем примере я запускаю глобальный цикл, который вызывает открытый метод активной страницы.
Например, приложение загружается в Page1.xaml
, если мой цикл срабатывает с этой страницей, мне нужно запустить цикл, найденный в коде кода. Если параметр Page2 активен, мне нужно будет запустить другой метод в файле с кодом кода страницы.
ПРИМЕЧАНИЕ. Мои методы на отдельных страницах не могут быть статичными, потому что мне нужен доступ к переменным экземпляра. Поэтому мне нужна не только активная страница (которая может быть достигнута с помощью какой-либо переменной), но мне нужен экземпляр текущей страницы.
Ответы
Ответ 1
Вы можете получить текущую страницу из корневого фрейма. По умолчанию класс App
, сгенерированный в проекте, имеет свойство RootFrame
, которое уже имеет тип PhoneApplicationFrame
. Значение свойства Content
- это текущая страница и может быть переведена в PhoneApplicationPage
.
var currentPage = ((App)Application.Current).RootFrame.Content as PhoneApplicationPage;
Свойство RootVisual
в классе Application
ссылается на один и тот же фрейм, но является UIElement
, поэтому вместо него можно использовать следующее:
var currentPage = ((PhoneApplicationFrame)Application.Current.RootVisual).Content;
Ответ 2
Вы можете получить текущий URL страницы XAML с помощью NavigationService.CurrentSource http://msdn.microsoft.com/en-gb/library/system.windows.navigation.navigationservice.currentsource(v=VS.92).aspx
Однако, чтобы получить экземпляр текущей страницы, я думаю, вам нужно будет поддерживать это самостоятельно - одним из способов было бы наследовать все ваши страницы из общего абстрактного класса, который переопределяет OnNavigatedTo, а затем использует это как возможность для записывать себя с помощью singleton (возможно, вашего класса App)