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

一页一页地传递数据

/ 猿问

一页一页地传递数据

幕布斯6054654 2019-12-14 14:41:41

我正在寻找有关如何在页面之间传递数据的最佳实践。

在页面AI中,有一个按钮可以触发页面B。
在页面BI中,有6个文本框,允许用户输入信息。完成用户操作后,单击按钮将其带回到页面A。

我想将该数据传递回A页。

我看到了以下建议:

  • 构建XML文档并保存到隔离存储

  • 使用App类将信息存储在属性中

  • 像查询字符串一样传递它

我正在寻找最佳实践。是Microsoft推荐的一种还是公认的最佳方法?

谢谢


查看完整描述

3 回答

?
MM们

TA贡献1716条经验 获得超3个赞

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

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

然后在其他页面中


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


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

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

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

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


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

TA贡献1656条经验 获得超6个赞

这里有两件事在起作用。首先,如果/当用户使用“后退”按钮而不是您的按钮返回到页面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

添加回答

回复

举报

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