2016-10-10 9 views
1

in meiner UWP App habe ich die Situation, dass ich zwei Frames benutze.UWP-Frame in Frame-Navigation - Wie auf den übergeordneten Frame zugreifen?

Zum Beispiel hat die Hauptseite einen Rahmen (MainFrame) und lädt in diesem Rahmen eine Unterseite, diese hat auch einen Rahmen (SubFrame1) und lädt eine dritte Seite in diesen Rahmen.

Jetzt möchte ich den Inhalt des Mainframe mit einem Klick auf eine Schaltfläche auf der dritten Seite ändern.

Wenn ich:

this.Frame.Navigate(typeof(FourthPage)); 

Es lädt die FourthPage im Rahmen von der Unterseite (SubFrame1), aber ich mag die FourthPage im Mainframe laden.

Antwort

2

Gerade zum Beispiel hier, wenn Sie Ihre dritte Seite ist wie folgt:

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 
    <Button Content="Navi from parent" Click="Button_Click" /> 
</Grid> 

Dann in der Schaltfläche Click-Ereignis finden Sie Ihre MainFrame wie folgt aus:

private void Button_Click(object sender, RoutedEventArgs e) 
{ 
    var grid = this.Frame.Parent as Grid; 
    var page = grid.Parent as SubFramePage; 
    var mainframe = page.Parent as Frame; 
    mainframe.Navigate(typeof(FourthPage)); 
} 

Es ist nur eine Probe, vielleicht ist Ihr Layout nicht so, Punkt ist, dass Sie den Elternteil Schicht für Schicht finden können.

0

Haupt Startseite haben dies:

<SplitView> 
    <SplitView.Pane> 
    </SplitView.Pane> 
    <SplitView.Content> 
     <Frame Name="MainFrame"></Frame> 
    </SplitView.Content> 
</SplitView> 

Nun wird eine andere Seite innerhalb dieser „Mainframe“ navigiert:

MainFrame.Navigate(typeof(AnotherPage)); 

Bedeutung „mainframe“ der Rahmen Eltern jetzt ist und in ihm, ein anderer Rahmen ist zugeteilt.

Wenn wir nun diese Eltern Rahmen bleiben im untergeordneten Frame navigieren möchten, dann können wir es auf folgende Weise zugreifen:

Frame parentFrame = Window.Current.Content as Frame; 
parentFrame.Navigate(typeof(MainPage)); 
Verwandte Themen