【问题标题】:How to detect back button -vs- GoBack() in WP7 app如何在 WP7 应用程序中检测后退按钮 -vs- GoBack()
【发布时间】:2012-03-29 08:56:27
【问题描述】:

也许我想多了,但这就是我想要完成的事情。

我的 WP7 应用中有两个 MVVM 项目(程序集)。主项目中的一个页面将调用第二个项目中的另一个页面。第二个页面将允许用户浏览网络上的文件列表并选择一个下载到独立存储。文件比较小。

关于背景知识:我想要两个程序集,因为此文件选择功能在应用程序中不经常使用,我希望主程序集尽可能小以减少启动时间。我还希望能够在其他应用程序中重复使用此文件选择/下载组件。

我想弄清楚的简单事情是,当用户选择文件并下载文件时,我将执行 GoBack() 以返回调用页面。在调用页面上,我需要知道用户是否确实下载了文件,或者他们是否通过简单地点击后退按钮取消了操作。我认为显而易见的事情可能只是检查隔离存储中的文件是否存在,但这对我来说有点杂乱无章。

我也考虑过 Messenger,但我不确定它如何跨两个程序集工作。

任何建议将不胜感激。

谢谢

【问题讨论】:

标签: windows-phone-7 mvvm navigation assemblies


【解决方案1】:

不看代码很难知道。但是,我建议您可以根据是否成功下载文件将值传回页面。使用如下值导航(根据下载成功传递 true 或 false):

NavigationService.Navigate(new Uri(("/Page.xaml?download=true", UriKind.Relative));

然后按如下方式评估目标中的页面:

string download = "";
if (NavigationContext.QueryString.TryGetValue("download", out imageurl))
{
}

【讨论】:

  • GoBack() 和 Navigate() 不同,如果您使用 Navigate 转到上一页,您还需要将其从导航日志中删除,否则当您回击时会出错页。但否则上述解决方案应该有效。因此,请确保在 Navigate() 之后调用 NavigationService.RemoveBackEntry
  • 谢谢大家。是的,Vitalij,我想在我的页面中使用 GoBack,因为我不想在依赖项中编写返回到何处的代码。换句话说,我正在尝试创建一个可在其他项目中使用的可重用页面。因此,我不知道该回到哪里。我想我可以在 OnNavigatedTo 覆盖中捕获我来自哪里,然后使用 Navigate 返回那里。而且我必须记住在原始调用页面上删除BackEntry。所以......虽然我知道我可以做到......这是正确的事情吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-17
相关资源
最近更新 更多