解决奇怪的Windows Phone 7导航问题

时间:2011-02-20 07:01:53

标签: silverlight windows-phone-7

我有一个非常奇怪的问题,涉及我如何处理应用程序中的导航,并且该应用程序现在被AppHub拒绝(在相同的代码库上成功批准多次... grr)

  1. 目前我正在捕获应用程序的第一个导航,并使用找到的示例here
  2. 在App.cs中将其添加到“添加项目”页面
  3. 然后用户添加“item”
  4. 用户再次进入“主”页面,但留在那里现在有1个“项目”显示在列表中
  5. 然后用户可以查看该项目的“详细信息”页面,他们可以选择删除当前项目。当他们这样做时,我再次将他们重定向到“主页”。
  6. 此导航然后触发与步骤1中发生的相同的事情 并将它们路由到“添加”页面
  7. 上述过程的问题在于,如果用户在步骤5中在路由页面上“后退”,则他们不会去任何地方,因为它们被路由回当前页面(因为页面上没有项目) previous和this会触发app.cs路由事件,将它们带到添加页面)。如果我 允许他们返回,他们能够返回的实际第一页是3个导航步骤,当他们第一次添加项目时 - 因为它们在“添加项目” “页面已经存在,这将毫无意义。

    apphub商店测试人员说,在这种情况下,应用程序应该关闭。我真的不知道f& * k我是怎么想让这种情况发生的,因为我可以打电话给没有“回到关闭”的动作......

    想法?

2 个答案:

答案 0 :(得分:3)

当用户决定“删除”当前项目时,您不应将向前导航到主页面,而将已删除的项目保留在导航堆栈中。您应该将返回导航到主页面。这样导航堆栈将为空,如果他们再次导航,应用程序将关闭。

(步骤3也是如此,当然 - 添加项目时,将返回导航到主页面。您不希望“添加”页面作为导航的一部分堆栈;该操作已完成。)

答案 1 :(得分:1)

我在WP7导航中读到的最好的建议是“如果你没有,请不要使用它”。我几乎停止使用它们只是使用“MainPage.xaml”来加载/卸载执行此类操作的用户控件。我根据需要完全控制了Back按钮。它让我非常头疼。要意识到的重要一点是,导航页面实际上只是模仿一个网站和它的页面 - 许多应用程序不适合这种范例(因为它们是应用程序,而不是网站)。因此,如果您不必使用导航,请不要使用它。

因此,在您的情况下,如果您只是管理MainPage.xaml上的所有内容,您将在OnBackKeyPress中使用一些If / Then语句,如果符合您的条件,请执行e.Cancel = true;并显示/负载/等。你的东西。如果没有,让应用程序自行导航 - 即退出。

对于墓碑,只需让MainPage.xaml中的OnNavigatedTo处理加载从Application_Activated检索到的逻辑删除信息中收到的正确用户控件。