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

时间:2016-10-10 23:40:21

标签: uwp frame

在我的UWP应用程序中我有这种情况,我使用了两个框架。

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

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

当我使用时:

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

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

2 个答案:

答案 0 :(得分:2)

仅举例来说,如果你的第三页是这样的:

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

它只是一个样本,也许你的布局不是这样,重点是你可以逐层找到父。

答案 1 :(得分:1)

主页包含:

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