UWP - 另一个页面内的页面导航('iOS UIContainerView with UINavigationController embeded' 等效?)
UWP - Page navigation within another Page ('iOS UIContainerView with UINavigationController embeded' equivalent?)
我正在将一个 iOS 应用程序移植到一个 UWP 项目,我想做一些事情来避免重复,但不确定如何去做。
在 iOS 上,我会在 UIContainerView
中嵌入一个 UINavigationController
,并且能够 push/pop 仅显示屏幕的一部分,而不是将整个页面推到顶部另一个。
有什么方法可以在 UWP 项目上做类似的事情吗?我实际上希望在 Page
中有一个 Page
,并且在内页上,能够将新页面推到该页面的顶部。
示例:页面顶部有 3 个导航按钮。它们是 'Tabs',每个按钮将 1 页加载到其下方的区域中。这是一个高度定制的 TabBar
。这些按钮最好在自己的页面中包含每 3 个页面的内容。
目前,我正在通过在多个页面中重复使用顶部的按钮来执行此操作。或者我可以根据按下的按钮手动换出多个 UserControl
。每页一个UserControl
。
任何有关首选方法的帮助都将非常有用!
干杯,
戴夫
Is there any way to do something similar on a UWP project? I effectively want to have a Page within a Page
如果我没理解错,可以用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));
}
and on the Inner page, be able to push a new page on top of that page.
您可以在 PageOne 上的 StackPanel 中定义一个按钮,如下所示:
<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));
}
这是我制作的基本Demo:FrameNavigationSample
我正在将一个 iOS 应用程序移植到一个 UWP 项目,我想做一些事情来避免重复,但不确定如何去做。
在 iOS 上,我会在 UIContainerView
中嵌入一个 UINavigationController
,并且能够 push/pop 仅显示屏幕的一部分,而不是将整个页面推到顶部另一个。
有什么方法可以在 UWP 项目上做类似的事情吗?我实际上希望在 Page
中有一个 Page
,并且在内页上,能够将新页面推到该页面的顶部。
示例:页面顶部有 3 个导航按钮。它们是 'Tabs',每个按钮将 1 页加载到其下方的区域中。这是一个高度定制的 TabBar
。这些按钮最好在自己的页面中包含每 3 个页面的内容。
目前,我正在通过在多个页面中重复使用顶部的按钮来执行此操作。或者我可以根据按下的按钮手动换出多个 UserControl
。每页一个UserControl
。
任何有关首选方法的帮助都将非常有用! 干杯, 戴夫
Is there any way to do something similar on a UWP project? I effectively want to have a Page within a Page
如果我没理解错,可以用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));
}
and on the Inner page, be able to push a new page on top of that page.
您可以在 PageOne 上的 StackPanel 中定义一个按钮,如下所示:
<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));
}
这是我制作的基本Demo:FrameNavigationSample