Как перейти на страницу 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));
Другие вопросы по тегам