3 回答
TA贡献1886条经验 获得超2个赞
PhoneApplicationService.Current.State["yourparam"] = param
NavigationService.Navigate(new Uri("/view/Page.xaml", UriKind.Relative));
然后在其他页面中
var k = PhoneApplicationService.Current.State["yourparam"];
TA贡献1815条经验 获得超13个赞
您可以考虑的一件事是使用MVC:让您的App作为控制器,将所有数据存储在模型中,页面只是包含纯UI逻辑的视图。在这种情况下,您的页面是画家,并且您将模型对象传递给周围。这样可以很好地隔离业务逻辑和UI,以便您轻松进行修订。
BTW,Silverlight和XAML是MVC的出色工具,因此自然而然。
TA贡献1840条经验 获得超5个赞
这里有两件事在起作用。首先,如果/当用户使用“后退”按钮而不是您的按钮返回到页面A时,是否交换了文本框中的信息(“后退=取消”还是“后退= OK”?)
就是说,如果您使用的是NavigationService.GoBack(而不应该使用NavigationService.Navigate,因为如果使用的是Navigate调用,则反复按下back键会对用户造成各种不良的UX),然后是QueryStrings不是一个选择。由于在WP7 Silverlight导航系统中页面实际上无法相互引用,因此您需要使用第三方来保存数据。为此,您可以求助于(a)隔离存储(缓慢且繁重,但具有故障保护功能),(b)使用PhoneApplicationService.State字典,或(c)使用某种与应用程序无关的全局属性对象,或使用“静态/单项” ...
请记住在执行此操作时要注意Tombstoning行为-在以下情况下,页面将处理OnNavigatedTo方法:(a)在应用程序中导航到它(b)在B页面上完成工作时导航回它,或者(c)您可以从该页面上删除应用程序,然后使用Back键返回到您的应用程序。
抱歉,我在这里没有给出更直接的答案-很大程度上取决于您的具体情况。在最一般的情况下,我会强烈考虑在PhoneApplicationService上使用“应用程序状态字典” ...它轻巧,易于使用,并且能够承受墓碑攻击。只要确保您的密钥是唯一的就可以了。
- 3 回答
- 0 关注
- 792 浏览
添加回答
举报