gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 23:17:11 25 4
gpt4 key购买 nike

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

Side-by-side

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

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

<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 始终为 null。

我也试过:

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 并使其正常工作。也就是说,您的应用程序中的工作流程现在由您决定。请记住,而不是 Frame.Navigate() 总是使用 NavigationService.Navigate() 并像您指示的那样使用 GetForFrame() 访问 NavigationService。

有道理吗?

关于c# - UWP 导航(Template10)、Pivo​​t 控件、多帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41643561/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com