Windows phone 7 如何在WP7应用程序中检测后退按钮-vs-GoBack()

Windows phone 7 如何在WP7应用程序中检测后退按钮-vs-GoBack(),windows-phone-7,mvvm,navigation,assemblies,Windows Phone 7,Mvvm,Navigation,Assemblies,也许我想得太多了,但以下是我想要实现的 我的WP7应用程序中有两个MVVM项目(程序集)。主项目中的一个页面将调用第二个项目中的另一个页面。第二个页面将允许用户浏览web上的文件列表,并选择一个要下载到独立存储的文件。这些文件相当小 作为一个小背景:我想要两个程序集,因为这个文件选择功能在应用程序中不经常使用,我希望主程序集尽可能小,以减少启动时间。我还希望能够在其他应用程序中重复使用此文件选择/下载组件 我试图弄清楚的一件简单的事情是,当用户选择文件并下载它时,我将执行GoBack()返回调用

也许我想得太多了,但以下是我想要实现的

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

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

我试图弄清楚的一件简单的事情是,当用户选择文件并下载它时,我将执行GoBack()返回调用页面。在调用页面上,我需要知道用户是否下载了文件,或者他们是否只需点击后退按钮就取消了操作。我认为最明显的事情可能是在隔离存储中检查文件是否存在,但这对我来说有点困难

我还考虑了Messenger,但我不确定它在两个程序集中如何工作

如有任何建议,将不胜感激


谢谢

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

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

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

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

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

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

GoBack()和Navigate()是不同的,如果使用Navigate转到上一页,则还需要将其从导航日志中删除,否则回击时将转到错误的页。但除此之外,上述解决方案应该有效。因此,请确保在Navigate()之后调用NavigationService.RemoveBackEntry。谢谢大家。是的,Vitalij,我想在我的页面中使用GoBack,因为我不想在依赖项中编写代码以返回到哪里。换句话说,我正在尝试创建一个可重用的页面,可以在其他项目中使用。所以我不知道该回到哪里去。我想我可以在OnNavigatedToOverride中捕获我来自哪里,然后使用Navigate返回那里。我必须记得删除原始呼叫页面上的返回条目。所以…虽然我知道我可以做到这一点…这是正确的做法吗?GoBack()和Navigate()是不同的,如果使用Navigate转到上一页,您还需要将其从导航日志中删除,否则当您回击时,您将进入错误的页。但除此之外,上述解决方案应该有效。因此,请确保在Navigate()之后调用NavigationService.RemoveBackEntry。谢谢大家。是的,Vitalij,我想在我的页面中使用GoBack,因为我不想在依赖项中编写代码以返回到哪里。换句话说,我正在尝试创建一个可重用的页面,可以在其他项目中使用。所以我不知道该回到哪里去。我想我可以在OnNavigatedToOverride中捕获我来自哪里,然后使用Navigate返回那里。我必须记得删除原始呼叫页面上的返回条目。所以…虽然我知道我能做到…但这是正确的做法吗?