繁体   English   中英

UWP 导航(Template10)、Pivo​​t 控件、多帧

[英]UWP navigation (Template10), Pivot control, multiple frames

我正在尝试在我的 UWP 应用程序中实现以下导航样式(使用 Template10),但正在努力如何将多个帧用作独立的历史堆栈。

并排

在枢轴的每一帧中,我想要一个独立的帧,它有自己的历史和返回堆栈。 只有通过枢轴才能在帧之间导航。

我正在考虑使用类似于以下的代码:

<Pivot>
   <PivotItem Header="PageA">
      <Frame x:Name="PageAFrame" />
   </PivotItem>
   <PivotItem Header="PageB">
      <Frame x:Name="PageBFrame" />
   </PivotItem>
   <PivotItem Header="PageC">
      <Frame x:Name="PageCFrame" />
   </PivotItem>
</Pivot>

但是,我不确定如何实际实现导航。 我试过使用类似于下面的代码,但没有运气:

var nav = Template10.Services.NavigationService.NavigationService.GetForFrame(PageAFrame);

nav始终为空。

我也试过:

PageAFrame.Navigate(typeof(PageA));

但是我的 ViewModel 没有被实例化。

有任何想法吗?

注意:我不使用汉堡包菜单的原因是我需要能够在枢轴之间交换,但仍保留每个枢轴的独立历史堆栈。

嵌套框架很好。 多帧是 T10 绝对支持的一个重要用例,但人们认识到单帧是开箱即用的,多帧需要开发人员代码。

从概念上讲,T10 创建了一个包装每一帧的 NavigationService。 创建的第一个 NavService 会自动附加到应用程序后退按钮,但开发人员可以使用 NavigationServiceFactory 中的参数重新分配或关闭该按钮。

https://github.com/Windows-XAML/Template10/blob/master/Template10%20(Library)/Common/Bootstrapper/BootStrapper.cs#L278

对于您引入的每一帧,您都需要使用工厂方法创建一个关联的 NavigationService。 这样做会将其注册到 T10 并使其正常工作。 话虽如此,您的应用程序中的工作流程现在取决于您。 请记住,始终使用 NavigationService.Navigate() 而不是 Frame.Navigate() 并按照您的指示使用 GetForFrame() 访问 NavigationService。

有道理?

Template10 导航服务负责应用程序的根框架,它不知道您的嵌套框架。 所以我给你的建议(这就是我所做的)是手动处理嵌套框架导航,不要浪费你的时间试图在 Template10 中找到一种方法来做到这一点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM