Von Page zu Page

Lies in den Artikel rein und unten bekommst Du ein unschlagbares Angebot!

Wenn Sie Pages zur Darstellung verschiedener Daten wie Übersichten, Detailansichten oder auch allgemeine Pages nutzen, die in einem Frame-Element angezeigt werden, wollen Sie gegebenenfalls auch einmal Daten von einer Seite zur nächsten schicken. Ein Anwendungsfall wäre die Auswahl eines Artikels in einer Übersichtsseite, der dann in einer Detailseite angezeigt werden soll. Oder das Öffnen einer Übersichtsseite zur Auswahl eines Eintrags, der dann in die aufrufende Seite übernommen werden soll. Dieser Artikel zeigt, wie Sie beim Navigieren im Frame-Element Informationen zwischen Page-Elementen hin- und herschicken können.

Grundgerüst für die Beispiele

Für die Beispiele haben wir im Fenster MainWindow.xaml ein Grid mit zwei Zeilen definiert. Es enthält in der ersten Zeile ein StackPanel-Element, mit dem wir die einzelnen Beispiele aufrufen können. Die zweite Zeile enthält ein Frame-Element namens fra, dass die Seiten für die einzelnen Beispiele anzeigen soll:

<Grid>
     <Grid.RowDefinitions>
         <RowDefinition Height="Auto"></RowDefinition>
         <RowDefinition Height="*"></RowDefinition>
         <RowDefinition Height="Auto"></RowDefinition>
     </Grid.RowDefinitions>
     <StackPanel Orientation="Horizontal">
         <Button x:Name="btnVonANachB" Click="btnVonANachB_Click">Beispiel Von A nach B per Konstruktor             starten</Button>
     </StackPanel>
     <Frame x:Name="fra" Grid.Row="1"></Frame>
</Grid>

Von A nach B per Konstruktor-Parameter

Wir wollen nun zwei Seiten definieren namens VonANachB_Konstruktor_SeiteA.xaml und VonANachB_Konstruktor_SeiteB.xaml. Die erste enthält ein Textfeld, in das Sie einen Text ein geben können. Mit einer Schaltfläche wollen wir die zweite Seite aufrufen und dieser den eingegebenen Text übergeben, sodass dieser dort in einem weiteren Textfeld angezeigt werden kann.

Die erste Seite VonANachB_Konstruktor_SeiteA.xaml definieren wir wie folgt:

<Grid>
     ...
     <Label FontWeight="Bold">Von A nach B per Konstruktor - Seite A</Label>
     <StackPanel Orientation="Horizontal" Grid.Row="1">
         <Label>Zu übergebender Wert:</Label>
         <TextBox x:Name="txtWert" Width="200"></TextBox>
     </StackPanel>
     <StackPanel Grid.Row="2">
         <Button x:Name="btnVonANachB" HorizontalAlignment="Left" Click="btnVonANachB_Click">            Wert nach B senden</Button>
     </StackPanel>
</Grid>

Die erste Seite sieht in der Entwurfsansicht wie in Bild 1 aus.

Aufbau der ersten Seite

Bild 1: Aufbau der ersten Seite

Die zweite Seite ist noch einfacher aufgebaut – sie enthält lediglich ein Label– und ein TextBox-Steuerelement:

<Grid>
     ...
     <Label FontWeight="Bold">Von A nach B per Konstruktor - Seite B</Label>
     <TextBox x:Name="txtParameter" Grid.Row="1" HorizontalAlignment="Left" Width="200"></TextBox>
</Grid>

Erste Seite aufrufen

Um die erste Seite im Frame-Element anzuzeigen, betätigen wir die Schaltfläche btnVonANachB_Konstruktor. Diese erstellt die Seite VonANachB_Konstruktor_SeiteA neu und referenziert diese Instanz mit der Variablen objVonANachB_Konstruktor_SeiteA. Damit diese im Frame-Element erscheint, rufen wir dessen Navigate-Methode mit dem Objektnamen als Parameter auf:

Class MainWindow
     Private Sub btnVonANachB_Konstruktor_Click(sender As Object, e As RoutedEventArgs)
         Dim pgeVonANachB_Navigate_SeiteA As New VonANachB_Konstruktor_SeiteA
         fra.Navigate(pgeVonANachB_Navigate_SeiteA)
     End Sub
End Class

Konstruktor der zweiten Seite mit Parameter ausstatten

Wir wollen den Wert aus dem Textfeld txtWert der ersten Seite zur zweiten Seite schicken. Für die Übergabe wollen wir einen Parameter der Konstruktor-Methode der zweiten Seite nutzen. Die Konstruktormethode, die immer New heißt, erstellen Sie am einfachsten, indem Sie mit der rechten Maustaste in die Klasse VonANach_Konstruktor_B im Codefenster der Code behind-Klasse VonANachB_Konstruktor_SeiteB.xaml.vb klicken und dort den Eintrag Schnellaktionen und Refactorings… auswählen.

Nach diesem Befehl erscheint eine Liste der möglichen Schnellaktionen. Hier wählen wir den Eintrag Konstruktor generieren… aus (siehe Bild 2).

Konstruktor hinzufügen

Bild 2: Konstruktor hinzufügen

Danach erscheint noch ein weiterer Dialog namens Member auswählen. Hier wählen Sie den Eintrag _contentLoaded ab (siehe Bild 3) und betätigen dann die OK-Schaltfläche.

 

Schreibe einen Kommentar