sobota, 18 sierpnia 2012

[WPF] Aplikacje wykorzystujące NavigationWindow

WPF wspiera tworzenie aplikacji, które przypominają strony internetowe, a więc takich, gdzie możemy przechodzić między stronami, lub wracać do poprzednio odwiedzonych. Komponentem, który wspiera takie zachowanie jest Page. Strony mogą być osadzane w dwóch kontenerach : Navigation Window oraz Frame. Zachowują się one podobnie, z tą różnicą, że NavigationWindow zawiera pasek do nawigacji. Aby rozpocząć, zamiast obiektu typu Window w App.xaml jako StartupUri podajemy obiekt typu Navigation Window. W samym NavigationWindow w xaml podajemy jako Source URI do startowej strony, np. Source="FirstPage". Wewnątrz strony można zwyczajnie, jak w UserControl układać kontrolki wewnątrz grida, należy jedynie mieć świadomość o braku zdarzeń OnClosed i OnClosing.

<NavigationWindow x:Class="Navigation_Based_Applications.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Source="MainPage.xaml" Height="350" Width="525">
   
</NavigationWindow>


Pomiędzy stronami można przechodzić, korzystając z metody Navigate klasy NavigationService.

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

Przechodzić można nie tylko do kontrolek typu Page, ale także do stron www, podając adres jako Uri :

this.NavigationService.Navigate(new Uri("http://www.codeproject.com"));

W efekcie uaktywni nam się pasek nawigacji w NavigationWindow. Będziemy mogli przechodzić do przodu / do tyłu, lub wybrać jedną z odwiedzonych stron z listy. Przechodzić do przodu i do tyłu można również z poziomu kodu, za pomocą metod:

            this.NavigationService.GoBack();
            this.NavigationService.GoForward();
        

Aby uniknąć wyjątku należy sprawdzić, czy okno ma gdzie nawigować (properties CanGoBack i CanGoForward z NavigationService).

Brak komentarzy:

Prześlij komentarz