![](/img/trans.png)
[英]How is Navigation from ContentDialog to a different page in UWP which uses Template10 MVVM possible?
[英]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 中的参数重新分配或关闭该按钮。
对于您引入的每一帧,您都需要使用工厂方法创建一个关联的 NavigationService。 这样做会将其注册到 T10 并使其正常工作。 话虽如此,您的应用程序中的工作流程现在取决于您。 请记住,始终使用 NavigationService.Navigate() 而不是 Frame.Navigate() 并按照您的指示使用 GetForFrame() 访问 NavigationService。
有道理?
Template10 导航服务负责应用程序的根框架,它不知道您的嵌套框架。 所以我给你的建议(这就是我所做的)是手动处理嵌套框架导航,不要浪费你的时间试图在 Template10 中找到一种方法来做到这一点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.