2016-02-29 2 views
0

Я создаю приложение WPF, которое выполняется в нескольких верхних кадрах с разными данными, отображаемыми для каждого открытого кадра, перезагружая передачу идентификатора.вернуться к первому фрейму, открытому в wpf xaml с C#

Если я хочу, чтобы вернуться на один кадр, я могу использовать это:

this.NavigationService.GoBack(); 

Но, вопрос, если я хотел бы вернуться к первому кадру, без необходимости зарядки всех я открыл в последовательности, вы Можно ? типа метод:

this.NavigationService.GoFirstFrameOpen()

Существует аналогичная функция? А если нет, то возможное решение?

+0

вы хотите историю, чтобы отразить, что вы вернулись, или что вы переходите вперед к первой странице ли? То есть, вы хотите пойти вперед, чтобы перейти на вторую страницу после того, как вы вернетесь к первому? Если так, я думаю, вам придется пройти через все из них. Если нет, вы можете сохранить ссылку на первую страницу и просто перейти к ней. – juharr

+0

Я бы не стал делать все кадры, я бы вернулся к первому, что пользователь открывает. возможно ? –

+0

@ Mr.Developer Ваша проблема решена? Если да, plz отметит правильный ответ, если нет, сообщите об этом. – AnjumSKhan

ответ

0

Frame.BackStack Недвижимость. Он возвращает IEnumerable, который вы используете для перечисления записей в истории задней навигации для фрейма.

Вы можете получить содержащую фрейм, пересекая VisualTree.

Пример:

private void Button_Click(object sender, RoutedEventArgs e) 
{ 
    var leaf = (DependencyObject)sender; 
    while(leaf.GetType() != typeof(Frame)) 
    { 
     leaf = VisualTreeHelper.GetParent(leaf); 
    } 

    Frame f = leaf as Frame; 
    if (f != null) 
    { 
     JournalEntry firstItem = null; 
     foreach (JournalEntry item in f.BackStack) 
     { 
      firstItem = item; 
      break; 
     } 

     this.NavigationService.Navigate(firstItem.Source); 
    } 
} 

Addional метода при навигации внутри страницы, а затем

  1. Вы можете иметь свой Page класс имеет параметризированный конструктор, принимающий объект кадра.

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

  3. Использовать PageFunction. A PageFunction - Страница, которая может вернуть значение.

WPF Navigation

+0

проблема в том, что я внутри рамки, я не могу вспомнить это с помощью метода BackStack –

+0

@ Mr.Developer plz см. Мой обновленный ответ – AnjumSKhan

+0

это работа! Спасибо –

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