我正在开发Windows Phone应用程序,这是我遇到问题的场景:所以我有三页,我们称之为第1,2,3页.在第1页中,我有一个名为开始下载的按钮.单击按钮并使用NavigateService.Navigate(page2Uri)并导航到page2.从Internet上...

我正在开发Windows Phone应用程序,这是我遇到问题的场景:
所以我有三页,我们称之为第1,2,3页.
在第1页中,我有一个名为开始下载的按钮.单击按钮并使用NavigateService.Navigate(page2Uri)并导航到page2.
从Internet上查询和下载图像,因此在其OnNavigateTo处理程序中,我检查页面堆栈,如果从第1页导航,我将进行下载.在此页面的应用栏中,我有一个可以导航到page3的按钮.
第3页是一个选项列表,它将对第2页中下载的图像执行某些操作.一旦我选择了一个选项,我想回到第2页并在加载的图像上执行一些行为.问题是:如果我使用NavigateService.Navigate(page2Uri)从page3导航到page2,它将调用Page2构造函数和OnNavigateTo处理程序再次,这将导致它丢失它已经获得的每个实例变量.
但是如果我使用NavigatService.GoBack它将返回到page2,然后意识到backstack top条目是page1(自page1 – > page2 – > page3).所以它会再次重新下载所有内容.
从第3页导航到第2页时,我不希望再次下载任何内容.所以想知道是否有人对此有好感.
谢谢.
解决方法:
有几种方法可以将数据传递到另一个页面:
>您可以使用Shawn建议的查询参数.
>您可以使用存储在app.cs中的全局数据
>您可以使用静态类来保存数据.
>您可以使用共享的viewModel来保存参数. (或viewmodel中的静态属性)
这一切都取决于具体情况.我认为Shawns建议使用查询参数可能是最“正确”的MVVM方式,但其他方法都有它们的位置.
本文标题为:c# – Windows Phone页面导航


基础教程推荐
- Unity shader实现高斯模糊效果 2023-01-16
- C# 解析XML和反序列化的示例 2023-04-14
- C#中的Linq to JSON操作详解 2023-06-08
- C#获取指定目录下某种格式文件集并备份到指定文件夹 2023-05-30
- C#通过标签软件Bartender的ZPL命令打印条码 2023-05-16
- C#中 Json 序列化去掉null值的方法 2022-11-18
- c# – USING块在网站与Windows窗体中的行为不同 2023-09-20
- C#调用摄像头实现拍照功能的示例代码 2023-03-09
- Unity 如何获取鼠标停留位置下的物体 2023-04-10
- 实例详解C#实现http不同方法的请求 2022-12-26