Как перейти на страницу xaml из класса
В моем приложении у меня есть класс Chronometer, который использует методы dispatcherTimer и Tick. Каждую секунду переменная убывает.
Мне бы хотелось, чтобы при значении переменной 0 загружалась новая страница xaml.
Я пытаюсь использовать NavigationService
но этот метод работает только в файле xaml.cs.
Моя страница xaml, которая видна при уменьшении переменной: WordPage.xaml Страница xaml, которую я хочу отобразить: FinalPage.xaml
Ты можешь понять, чего я хочу? пожалуйста, помогите мне
РЕДАКТИРОВАТЬ:
Мой конструктор моего класса:
public Chrono(DispatcherTimer newTimer, TextBlock chrono, TextBlock NumEquip, P1 page1)
{
//Part effaced
m_page1 = page1;
}
и экземпляр объекта Chrono это:
MonChrono = new Chrono(newTimer, this.TimeLabel, this);
2 ответа
Вы не можете создать экземпляр NavigationService, это главная проблема. Но вы могли бы передать свой объект страницы в качестве параметра и получить доступ к его NavigationService.Property
public void NavigateToPage(YouPageClass page)
{
page.NavigationService.Navigate(new Uri("/Pages/PageToNavigateTo.xaml",
UriKind.RelativeOrAbsolute));
}
Пример проекта: http://www.abouchleih.com/wp-content/uploads/TestNavigationFromClass.zip
Изменить: я нашел лучшее решение. Не передавайте объект страницы, лучше передавайте его NavigationService-Property, теперь вы можете просто вызывать один и тот же метод с нескольких страниц.
Метод в вашем классе:
public static void Nav(NavigationService s, Uri destination)
{
s.Navigate(destination);
}
Звоните со страницы:
private void button_navigateTo_Click(object sender, RoutedEventArgs e)
{
NavService.Nav(this.NavigationService, new Uri("/PageToNavigateTo.xaml", UriKind.RelativeOrAbsolute));
}
Используйте RootFrame в App.xaml
(App.Current as App).RootFrame.Navigate(new Uri("/Page1.xaml", UriKind.RelativeOrAbsolute));