我将iOS应用程序移植到UWP项目中,我喜欢做一些事情来节省一些重复但不知道该怎么做。
在iOS上,我会在UINavigationController
中嵌入一个UIContainerView
,并且只能推送/弹出屏幕的一部分,而不是将整页推到另一个页面上。
有没有办法在UWP项目上做类似的事情?我实际上希望在Page
中拥有Page
,并且在内页面上,可以在该页面顶部推送新页面。
示例:页面顶部有3个导航按钮。他们是' Tabs'每个按钮将1页加载到它下面的区域。它是一个高度定制的TabBar
。这些按钮很适合在自己的页面中显示其页面中每3页的内容。
目前,我是通过重复使用多个页面顶部的按钮来实现此目的的。或者我可以根据按下的按钮手动换出多个UserControl
。每页一个UserControl
。
对于首选方法的任何帮助都会很棒! 干杯, 戴夫。
答案 0 :(得分: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