使用Template 10 Hamburger Template

时间:2016-08-24 10:57:55

标签: uwp template10

我正试图弄清楚如何使用Template 10 Hamburger Template处理UWP应用中的页面层次结构。 最后,我希望能够在Hamburger菜单项上选择应用程序的主要部分,并选择一些选项卡来浏览各个部分的视图和子视图,根据上下文更改可用的选项卡I我现在在。

应用程序的各个部分相当复杂,也应该可以导航,例如我应该能够使用后退按钮导航到下一个更高的层次结构,所以我认为选项卡导航必须基于帧导航。

当我浏览该部分的页面和子页面时,如何管理我当前所在部分的汉堡菜单项? 是否有使用HamburgerButtonInfo的PageType属性(将项目的选择状态绑定到当前显示的页面)的替代方法?

一些Picutres解释:1

2 个答案:

答案 0 :(得分:1)

为了突出显示'子页面上的汉堡菜单项目。你可以做到以下几点:

  1. 在Shell类中创建一个方法,用于选择要在代码中选择的按钮。只需将您选择的HamburgerMenu设置为所需的HamburgerButtonInfo实例。 PageType必须设置为' null'为了避免导航到相应的页面。

    public static HamburgerButtonInfo AButton => Instance.MyButton;
    public void HighlightButton(HamburgerButtonInfo button)
    {
        Type pageType = button.PageType;
        button.PageType = null;
        HamburgerMenu.Selected = button;
        button.PageType = pageType;
    }
    
  2. 在OnNavigatedTo页面中通过Shell.Instance调用该方法。

    protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        Shell.Instance.HighlightButton(Shell.AButton);
        base.OnNavigatedTo(e);
    }
    

答案 1 :(得分:0)

使用Template 10导航系统,您可以将参数传递到页面,然后打开正确的选项卡(如Hamburger项目模板的设置页面所示)。

但是当用户更改标签时,它仍然是同一页面,您无法控制后退按钮行为,因为更改枢轴不会进入堆栈(可能有一种方法可以强制执行如果你跟踪SelectionChanged事件,但我不确定)。 目前你无法操纵BackRequest并手动操作堆栈,如果你在第2级,因为有一个错误使它只能使用硬件按钮(在手机和鼠标后退按钮上,它没有工作点击按钮在屏幕上。)

你可以随时做你拍照的方式: 级别0打开一个页面,这些级别1页面可以包含作为不同页面的级别2的链接。

我认为实现它的最佳方法是创建一个自定义控件,显示从第1级开始的当前树。 根据您的示例,它是页面的第一行,显示"菜单项1"和"菜单项1>第1页"中第X项的细节。 您可以将该控件放在每个页面上,它是可选的,因为即使没有它,此解决方案仍可正常工作。

在第1级页面上,您可以导航到第2级页面;它将被添加到堆栈中,然后当用户点击"返回"它将返回父页面。