为了账号安全,请及时绑定邮箱和手机立即绑定

一页一页地传递数据

一页一页地传递数据

幕布斯6054654 2019-12-14 14:41:41
我正在寻找有关如何在页面之间传递数据的最佳实践。在页面AI中,有一个按钮可以触发页面B。在页面BI中,有6个文本框,允许用户输入信息。完成用户操作后,单击按钮将其带回到页面A。我想将该数据传递回A页。我看到了以下建议:构建XML文档并保存到隔离存储使用App类将信息存储在属性中像查询字符串一样传递它我正在寻找最佳实践。是Microsoft推荐的一种还是公认的最佳方法?谢谢
查看完整描述

3 回答

?
MM们

TA贡献1886条经验 获得超2个赞

PhoneApplicationService.Current.State["yourparam"] = param

NavigationService.Navigate(new Uri("/view/Page.xaml", UriKind.Relative));

然后在其他页面中


var k = PhoneApplicationService.Current.State["yourparam"];


查看完整回答
反对 回复 2019-12-14
?
萧十郎

TA贡献1815条经验 获得超11个赞

您可以考虑的一件事是使用MVC:让您的App作为控制器,将所有数据存储在模型中,页面只是包含纯UI逻辑的视图。在这种情况下,您的页面是画家,并且您将模型对象传递给周围。这样可以很好地隔离业务逻辑和UI,以便您轻松进行修订。

BTW,Silverlight和XAML是MVC的出色工具,因此自然而然。


查看完整回答
反对 回复 2019-12-14
?
慕斯709654

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上使用“应用程序状态字典” ...它轻巧,易于使用,并且能够承受墓碑攻击。只要确保您的密钥是唯一的就可以了。



查看完整回答
反对 回复 2019-12-14
  • 3 回答
  • 0 关注
  • 714 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信