我目前正在为Windows 8开发一个应该提供嵌套导航的应用程序。主视图分为3个部分,左侧是菜单区域,内容区域和标题。菜单和标题都应始终可见。
“内容”区域填充了从主菜单中选择的内容,但是如果用户选择例如列表,则“内容”区域将再次分为两个部分,我想在左侧显示列表并选择详细信息右侧(类似于内置邮件应用程序)。细节视图再次具有子视图,应显示在同一区域中。我添加了一个后退按钮来浏览详细信息视图。
每个视图当前都包含在Frame元素中,这意味着我在主视图中有一个MenuFrame和ContentFrame,在“list”-view中有一个ListFrame和一个DetailFrame。我维护每个Frame的后台堆栈以启用导航功能。
我的问题是:如果用户想要捕捉应用程序(与其他Win8-Apps或桌面并排显示),则应用程序的空间非常小。因此,我想在捕捉模式下一次只显示一个视图,这意味着用户首先看到主菜单,然后是列表,然后是详细信息视图,他应该能够在所有情况下导航回父视图(这意味着我必须为所有观点维护一个背斜?)。
有没有一种简单的方法可以实现这种行为?
另一个问题:目前我不使用Frame.Navigate方法,但我只是通过创建UserControl并将它们分配给Frame.Content属性来实现我自己的backstack。如果应用程序想要导航回来,则从堆栈中弹出先前的控件并将其设置为帧内容。这样做的好处是我可以在控件构造函数中执行可能引发异常的代码。这种方法或其他原因是否有任何缺点,您建议切换到标准的Frame.Navigate()模式?