Подтвердить что ты не робот

Как получить текущую страницу в моем приложении WP7

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

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

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

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

4b9b3361

Ответ 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)