Przegląd Topologia nawigacji

To omówienie zawiera wprowadzenie do topologii nawigacji w WPF. Trzy typowe topologie nawigacji, z przykładami, są następnie omawiane.

Uwaga

Przed przeczytaniem tego tematu należy zapoznać się z koncepcją nawigacji strukturalnej w WPF przy użyciu funkcji stron. Aby uzyskać więcej informacji na temat obu tych tematów, zobacz Omówienie nawigacji strukturalnej.

Ten temat zawiera następujące sekcje:

W WPF nawigacja zazwyczaj składa się ze stron (Page) z hiperlinkami (Hyperlink), które przechodzą do innych stron po kliknięciu. Strony, do których przechodzi się, są identyfikowane przez identyfikatory URI (URI) (zobacz Identyfikatory URI pakietów w WPF). Rozważmy następujący prosty przykład pokazujący strony, hiperlinki i jednolite identyfikatory zasobów (URI):

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" WindowTitle="Page1">
  <Hyperlink NavigateUri="Page2.xaml">Navigate to Page2</Hyperlink>
</Page>
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" WindowTitle="Page2">
  <Hyperlink NavigateUri="Page1.xaml">Navigate to Page1</Hyperlink>
</Page>

Te strony są rozmieszczane w topologii nawigacji, której struktura jest określana przez sposób przechodzenia między stronami. Ta konkretna topologia nawigacji jest odpowiednia w prostych scenariuszach, chociaż nawigacja może wymagać bardziej złożonych topologii, z których niektóre można zdefiniować tylko w przypadku uruchamiania aplikacji.

W tym temacie opisano trzy typowe topologie nawigacji: stały liniowy, stały hierarchiczny i dynamicznie generowany. Każda topologia nawigacji jest pokazana przy użyciu przykładu, który ma interfejs użytkownika podobny do przedstawionego na poniższej ilustracji:

Task pages with data items and navigation buttons.

Topologie nawigacji ustrukturyzowanej

Istnieją dwa szerokie typy topologii nawigacji:

  • Naprawiono topologię: zdefiniowano w czasie kompilacji i nie zmienia się w czasie wykonywania. Stałe topologie są przydatne do nawigacji przez stałą sekwencję stron w kolejności liniowej lub hierarchicznej.

  • Topologia dynamiczna: zdefiniowana w czasie wykonywania na podstawie danych wejściowych zebranych od użytkownika, aplikacji lub systemu. Dynamiczne topologie są przydatne, gdy można nawigować po stronach w różnych sekwencjach.

Chociaż istnieje możliwość tworzenia topologii nawigacji przy użyciu stron, przykłady używają funkcji strony, ponieważ zapewniają dodatkową obsługę, która upraszcza obsługę przekazywania i zwracania danych za pośrednictwem stron topologii.

Stała topologia liniowa jest analogiczna do struktury kreatora, który ma co najmniej jedną stronę kreatora, która jest nawigowana w stałej sekwencji. Na poniższej ilustracji przedstawiono strukturę wysokiego poziomu i przepływ kreatora ze stałą topologią liniową:

Diagram that shows a fixed linear topology.

Typowe zachowania nawigowania po stałej topologii liniowej obejmują następujące elementy:

  • Przejście ze strony wywołującej do strony uruchamiania, która inicjuje kreatora i przechodzi do pierwszej strony kreatora. Strona uruchamiania (bez PageFunction<T>interfejsu użytkownika) nie jest wymagana, ponieważ strona wywołująca może bezpośrednio wywołać pierwszą stronę kreatora. Jednak użycie strony uruchamiania może uprościć inicjowanie kreatora, szczególnie jeśli inicjowanie jest złożone.

  • Użytkownicy mogą nawigować między stronami przy użyciu przycisków Wstecz i Prześlij dalej (lub hiperlinków).

  • Użytkownicy mogą nawigować między stronami przy użyciu dziennika.

  • Użytkownicy mogą anulować kreatora z dowolnej strony kreatora, naciskając przycisk Anuluj.

  • Użytkownicy mogą zaakceptować kreatora na ostatniej stronie kreatora, naciskając przycisk Zakończ.

  • Jeśli kreator zostanie anulowany, kreator zwróci odpowiedni wynik i nie zwraca żadnych danych.

  • Jeśli użytkownik zaakceptuje kreatora, kreator zwróci odpowiedni wynik i zwróci zebrane dane.

  • Gdy kreator zostanie ukończony (zaakceptowany lub anulowany), strony, z których składa się kreator, zostaną usunięte z dziennika. Dzięki temu każde wystąpienie kreatora jest odizolowane, co pozwala uniknąć potencjalnych anomalii danych lub stanu.

Nawigacja dynamiczna przez stałą topologię hierarchiczną

W niektórych aplikacjach strony umożliwiają nawigację do co najmniej dwóch innych stron, jak pokazano na poniższej ilustracji:

Diagram that shows a page that can navigate to multiple pages.

Ta struktura jest znana jako stała topologia hierarchiczna, a sekwencja przechodzenia hierarchii jest często określana w czasie wykonywania przez aplikację lub użytkownika. W czasie wykonywania każda strona w hierarchii, która umożliwia nawigację do co najmniej dwóch innych stron, zbiera dane wymagane do określenia, do której strony należy przejść. Na poniższej ilustracji przedstawiono jedną z kilku możliwych sekwencji nawigacji na podstawie poprzedniej ilustracji:

Diagram that shows a possible navigation sequence.

Mimo że sekwencja stron w stałej strukturze hierarchicznej jest określana w czasie wykonywania, środowisko użytkownika jest takie samo jak środowisko użytkownika dla stałej topologii liniowej:

  • Przejście ze strony wywołującej do strony uruchamiania, która inicjuje kreatora i przechodzi do pierwszej strony kreatora. Strona uruchamiania (bez PageFunction<T>interfejsu użytkownika) nie jest wymagana, ponieważ strona wywołująca może bezpośrednio wywołać pierwszą stronę kreatora. Jednak użycie strony uruchamiania może uprościć inicjowanie kreatora, szczególnie jeśli inicjowanie jest złożone.

  • Użytkownicy mogą nawigować między stronami przy użyciu przycisków Wstecz i Prześlij dalej (lub hiperlinków).

  • Użytkownicy mogą nawigować między stronami przy użyciu dziennika.

  • Użytkownicy mogą zmieniać sekwencję nawigacji, jeśli przechodzą z powrotem przez dziennik.

  • Użytkownicy mogą anulować kreatora z dowolnej strony kreatora, naciskając przycisk Anuluj.

  • Użytkownicy mogą zaakceptować kreatora na ostatniej stronie kreatora, naciskając przycisk Zakończ.

  • Jeśli kreator zostanie anulowany, kreator zwróci odpowiedni wynik i nie zwraca żadnych danych.

  • Jeśli użytkownik zaakceptuje kreatora, kreator zwróci odpowiedni wynik i zwróci zebrane dane.

  • Gdy kreator zostanie ukończony (zaakceptowany lub anulowany), strony, z których składa się kreator, zostaną usunięte z dziennika. Dzięki temu każde wystąpienie kreatora jest odizolowane, co pozwala uniknąć potencjalnych anomalii danych lub stanu.

W niektórych aplikacjach sekwencja, w której są nawigowane co najmniej dwie strony, można określić tylko w czasie wykonywania, zarówno przez użytkownika, aplikację, jak i dane zewnętrzne. Na poniższej ilustracji przedstawiono zestaw stron z nieokreśloną sekwencją nawigacji:

A set of pages with an undetermined navigation sequence.

Na następnej ilustracji przedstawiono sekwencję nawigacji wybraną przez użytkownika w czasie wykonywania:

Diagram that shows a navigation sequence chosen at run time.

Sekwencja nawigacji jest nazywana dynamicznie generowaną topologią. W przypadku użytkownika, podobnie jak w przypadku innych topologii nawigacji, środowisko użytkownika jest takie samo jak w przypadku poprzednich topologii:

  • Przejście ze strony wywołującej do strony uruchamiania, która inicjuje kreatora i przechodzi do pierwszej strony kreatora. Strona uruchamiania (bez PageFunction<T>interfejsu użytkownika) nie jest wymagana, ponieważ strona wywołująca może bezpośrednio wywołać pierwszą stronę kreatora. Jednak użycie strony uruchamiania może uprościć inicjowanie kreatora, szczególnie jeśli inicjowanie jest złożone.

  • Użytkownicy mogą nawigować między stronami przy użyciu przycisków Wstecz i Prześlij dalej (lub hiperlinków).

  • Użytkownicy mogą nawigować między stronami przy użyciu dziennika.

  • Użytkownicy mogą anulować kreatora z dowolnej strony kreatora, naciskając przycisk Anuluj.

  • Użytkownicy mogą zaakceptować kreatora na ostatniej stronie kreatora, naciskając przycisk Zakończ.

  • Jeśli kreator zostanie anulowany, kreator zwróci odpowiedni wynik i nie zwraca żadnych danych.

  • Jeśli użytkownik zaakceptuje kreatora, kreator zwróci odpowiedni wynik i zwróci zebrane dane.

  • Gdy kreator zostanie ukończony (zaakceptowany lub anulowany), strony, z których składa się kreator, zostaną usunięte z dziennika. Dzięki temu każde wystąpienie kreatora jest odizolowane, co pozwala uniknąć potencjalnych anomalii danych lub stanu.

Zobacz też