2

我目前正在为 Windows 8 开发一个应该提供嵌套导航的应用程序。主视图分为 3 个部分,左侧的菜单区域、内容区域和页眉。菜单和标题都应该始终可见。在此处输入图像描述

内容区域填充了从主菜单中选择的内容,但是如果用户选择例如一个列表,则内容区域再次分为两个部分,我想在左侧显示列表和选择的详细信息右侧(类似于内置邮件应用程序)。详细视图再次具有子视图,应显示在同一区域中。我添加了一个后退按钮来浏览详细视图。在此处输入图像描述

每个视图当前都包含在一个 Frame 元素中,这意味着我在主视图中有一个 MenuFrame 和 ContentFrame,在“列表”视图中有一个 ListFrame 和一个 DetailFrame。我为每个 Frame 维护 backstacks 以启用向后导航。

我的问题是:如果用户想要捕捉应用程序(与其他 Win8 应用程序或桌面并排显示),应用程序的空间非常小。因此我想在捕捉模式下一次只显示一个视图,这意味着用户首先看到主菜单,然后是列表,然后是详细信息视图,并且他应该能够在所有情况下导航回父视图(这意味着我必须为所有视图维护一个后台堆栈?)。

有没有一种简单的方法来实现这种行为?

另一个问题:目前我不使用 Frame.Navigate-methods,但我通过创建 UserControls 并将它们分配给 Frame.Content 属性来实现我自己的 backstack。如果应用程序想要向后导航,则会从堆栈中弹出前一个控件并将其设置为 Frame Content。这样做的好处是我可以在可能引发异常的控件构造函数中执行代码。这种方法是否有任何缺点或其他原因导致您建议切换到标准 Frame.Navigate() 模式?

4

0 回答 0