首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Template10在页面中导航

使用Template10在页面中导航
EN

Stack Overflow用户
提问于 2016-03-10 20:39:35
回答 4查看 1.1K关注 0票数 3

我有问题如何在UWP中实现子页面导航。该页面在RootFrame中,我可以在导航上使用它。但我想用这样的方法:

代码语言:javascript
运行
复制
    <Page>
<Grid>
 <Frame x:Name="MyFrame"/>
</Grid>
</Page>

我想要的是,在MyFrame中使用ViewModel中的导航方法。我可以从代码背后调用该方法,但我正在使用MVVM开发我的应用程序。我不确定,Template10是否能处理子帧.

我很感激你的建议。

编辑:更多细节:我有支点控件,在页面中。枢轴有两个标签(枢轴)。枢轴的内容必须是可导航的。我的意思是:我需要一个框架,并在枢轴中使用它来导航。我的问题是,如何使用或如何从ViewModel调用pivotitem中的框架,特别是我需要调用导航方法。现在,我正在使用Template10 10的导航服务,它正在使用根框架。我不知道,怎么用它来做其他的,比如说子帧。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-03-18 16:55:16

你总能做到的。

代码语言:javascript
运行
复制
var nav = Bootstrapper.NavigationServiceFactory(BackButton.Attach, ExistingContent.Exclude, this.Frame);

这将为页面中的框架提供导航服务。然后,如果愿意,可以使用会话状态。

代码语言:javascript
运行
复制
Bootstapper.SessionState["MyNav"] = nav;

从这里开始,您的视图模型可以访问服务并导航。你可以重复这一点,因为你有多少帧。然后,您可以在视图模型中处理导航,而无需考虑框架的“位置”,只是您的逻辑需要导航。

这有道理吗?

票数 5
EN

Stack Overflow用户

发布于 2016-03-10 21:34:27

我不知道您将如何触发导航更改,所以我假设它将从单击按钮开始。我还假设按钮的Command属性已经绑定到视图模型中的ICommand (相同的概念可以应用于不同类型的视图)。

我们现在要做的就是让ICommand实现调用我们的自定义NavigationService来执行内容切换。这个NavigationService类只是窗口全局框架的一个简单代理。其主要导航方法可以简单如下:

代码语言:javascript
运行
复制
    public void Switch()
    {
        var rootFrame = Window.Current.Content as Frame;

        if ((rootFrame.Content as ParentPage) != null)
        {
            rootFrame.Navigate(typeof(ChildPage));   
        }
    }
票数 2
EN

Stack Overflow用户

发布于 2016-03-14 20:44:36

因此,您已经用Template10标记了这个问题,但是对于整个UWP来说,这似乎是一个更普遍的问题。我想知道你是否考虑过这种方法的所有内在复杂性-特别是与暂停和复会有关。对于您拥有的每个框架,您都需要保存和恢复导航状态,当您有嵌套的框架时,导航状态不是直进的。您是否也考虑过全球导航将如何工作?

模板10确实支持多个NavigationServices的概念,因此支持多个框架,但只有从您的角度才能创建它们。Template10本质上并不理解这些帧之间如何相互关联,因此不能执行自动反向传播,如果您有以下内容:

FrameA[Main->Page1->Page1:Pivot1.FrameBView1->View2->View3]

这里我们有两个框架- FrameA和FrameB。FrameA已经从Main导航到Page1。Page1有一个在PivotItem1中托管FrameB的数据轴,FrameB从View1导航到View 2,从View2导航到View 3。

全局导航(即外壳返回等)将自动连接到FrameA,因此您需要拦截该操作,然后处理您自己的FrameB导航活动。

看一看BackButtonBehavior,看看如何能够拦截全局回退,然后执行自己的操作。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35926809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档