首页 文章

UWP - 另一个页面内的页面导航('iOS UIContainerView with UINavigationController embeded'等效?)

提问于
浏览
0

我正在将一个iOS应用程序移植到UWP项目中,我希望能够做些什么来节省一些重复但不知道该怎么做 .

在iOS上,我会在 UIContainerView 中嵌入一个 UINavigationController ,并且只能推送/弹出屏幕的一部分,而不是将整页推到另一个上面 .

有没有办法在UWP项目上做类似的事情?我实际上希望在 Page 中有 Page ,并且在Inner页面上,能够在该页面顶部推送新页面 .

示例:页面顶部有3个导航按钮 . 它们是'Tabs',每个按钮加载1页到它下面的区域 . 这是一个高度定制的 TabBar . 这些按钮在他们自己的页面中可以很好地包含其自己页面中每3页的内容 .

目前我是通过重复使用多个页面顶部的按钮来实现这一点的 . 或者我可以根据按下的按钮手动换出多个 UserControl . 每页一个 UserControl .

任何有关首选方法的帮助都会很棒!干杯,戴夫 .

1 回答

  • 1

    有没有办法在UWP项目上做类似的事情?我实际上想在页面中有一个页面

    如果我不明白它错了,你可以使用Frame .

    例如:在MainPage.Xaml上,您可以使用三个 Button 定义一个Frame:

    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
        <StackPanel>
            <Button Name="btnPageOne" Content="Page One" Click="btnPageOne_Click"></Button>
            <Button Name="btnPageTwo" Content="Page Two" Click="btnPageTwo_Click"></Button>
            <Button Name="btnPageThree" Content="Page Three" Click="btnPageThree_Click"></Button>
            <Frame Name="MyFrame" Width="500" Height="600"></Frame>
        </StackPanel>
    </Grid>
    

    在三个按钮的单击事件上,您可以将框架导航到三个页面:

    private void btnPageOne_Click(object sender, RoutedEventArgs e)
    {
        MyFrame.Navigate(typeof(PageOne));
    }
    
    private void btnPageTwo_Click(object sender, RoutedEventArgs e)
    {
        MyFrame.Navigate(typeof(PageTwo));
    }
    
    private void btnPageThree_Click(object sender, RoutedEventArgs e)
    {
        MyFrame.Navigate(typeof(PageThree));
    }
    

    在内页面上,可以在该页面顶部推送新页面 .

    您可以在StackPanel中的PageOne上定义一个按钮,如下所示:

    <Grid Name="rootGrid" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
        <StackPanel Name="myStackPanel">
            <Button  Name="myBtn" Click="myBtn_Click">Click Me to add Page</Button>
        </StackPanel>
    </Grid>
    

    并在 Click 事件中向该StackPanel添加新的 Frames

    private void myBtn_Click(object sender, RoutedEventArgs e)
    {
         Frame newFrame = new Frame{
                 Width=100,
                 Height=100
         };
         myStackPanel.Children.Add(newFrame);
         newFrame.Navigate(typeof(SubPageOne));
    }
    

    这是我做的基本演示:FrameNavigationSample

相关问题