框架导航中的 UWP 框架 - 如何访问父框架?

UWP frame in frame navigation - How to access the parent frame?

在我的 UWP 应用程序中,我使用了两个框架。

例如主页有一个框架(MainFrame)并在这个框架中加载一个子页面,这也有一个框架(SubFrame1)并在这个框架中加载第三个页面。

现在我想通过单击第三页上的按钮来更改 MainFrame 的内容。

当我使用:

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

它从子页面 (SubFrame1) 加载框架中的 FourthPage,但我想在 MainFrame 中加载 FourthPage。

举个例子,如果你的第三页是这样的:

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

然后在按钮点击事件中你可以找到你的 MainFrame 这样的:

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));
}

这只是一个示例,可能你的布局不是这样的,关键是你可以逐层找到父级。

主页有这个:

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

现在在此 "MainFrame" 中导航另一个页面:

MainFrame.Navigate(typeof(AnotherPage));

意思是 "MainFrame" 现在是父框架,在其中分配了另一个框架。

现在如果我们想在子框架中导航这个父框架,那么我们可以通过以下方式访问它:

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