UWP-在另一个页面中进行页面导航(嵌入UINavigationController的iOS UIContainerVi
本文关键字:UINavigationController 嵌入 UIContainerVi iOS 另一个 UWP- 导航 | 更新日期: 2023-09-27 17:59:19
我正在将iOS应用程序移植到UWP项目中,我很想做一些事情来节省一些重复,但不知道如何做到。
在iOS上,我会在UIContainerView
中嵌入UINavigationController
,并且能够只推送/弹出屏幕的一部分,而不是在另一个屏幕上推送整个页面。
有什么方法可以在UWP项目上做类似的事情吗?我实际上希望在Page
中有一个Page
,并且在内部页面上,能够在该页面的顶部推送一个新页面。
示例:在页面顶部有3个导航按钮。它们是"选项卡",每个按钮在下面的区域加载一页。这是一个高度定制的TabBar
。按钮最好在自己的页面中,每3页的内容都在自己的网页中。
目前,我正在通过在多个页面中重新使用顶部的按钮来实现这一点。或者,我可以根据按下的按钮手动交换多个UserControl
。每页一个UserControl
。
任何关于首选方法的帮助都将是伟大的!干杯戴夫。
有什么方法可以在UWP项目上做类似的事情吗?我实际上想在页面中有一个页面
如果我没有理解错,你可以使用Frame。
例如:在MainPage.Xaml上,您可以定义一个具有三个Button
的帧:
<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
事件中,将新的Frames
添加到StackPanel:
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