2013-05-29 7 views
4

Я использую навигационные службы в WPF. Для навигации по странице я использую:Перейти на первую страницу в C# WPF

this.NavigationService.Navigate(new MyPage()); 

Для возвращения я использую:

this.NavigationService.GoBack(); 

Но как же я вернуться к первой странице (кнопка Home) без использования

this.NavigationService.Navigate(new FirstScreen()); 

Потому что я не хочу создавать новую первую страницу, просто вернитесь к ней? И я не всегда открываю новые экраны в том же порядке.

ответ

6

Одним из способов может быть использование метода RemoveBackEntry, пока в задней части навигационной службы не останется только одна запись. Когда есть только одна запись, просто сделайте Navigation.GoBack()

+0

Вы можете найти его трудно контролировать срок службы ваших страниц с помощью этого метода. Если все ваши страницы не обрабатывают «разгруженные», они могут не удалять неуправляемые и текущие операции правильно при удалении из журнала. – Gusdor

4

Вот возможное решение, однако, может быть метод «лучшей практики», что я в настоящее время не в курсе:

while(this.NavigationService.CanGoBack) 
{ 
    this.NavigationService.GoBack(); 
} 

CanGoBack возвращает истину, если есть записи в истории обратно навигации и как таковые GoBack() будет выполняться до тех пор, пока он не вернет false. Теоретически это должно вернуть вас к происхождению, или, другими словами, к первой странице.

2

Рассмотрите возможность внедрения PageFunction<T>. Этот класс (полученный от Page) предназначен для сценариев, когда вы хотите расслабиться на странице «старт». Он может вернуть/предоставить объект type T в результате «завершения» варианта использования (функции).

Более подробно (лучше, чем MSDN) можно найти здесь http://paulstovell.com/blog/wpf-navigation

Смежные вопросы