一页一页地传递数据

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

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

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

我看到了以下建议:

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

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

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

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

谢谢


幕布斯6054654
浏览 793回答 3
3回答

MM们

PhoneApplicationService.Current.State["yourparam"] = paramNavigationService.Navigate(new Uri("/view/Page.xaml", UriKind.Relative));然后在其他页面中var k = PhoneApplicationService.Current.State["yourparam"];

萧十郎

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

慕斯709654

这里有两件事在起作用。首先,如果/当用户使用“后退”按钮而不是您的按钮返回到页面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上使用“应用程序状态字典” ...它轻巧,易于使用,并且能够承受墓碑攻击。只要确保您的密钥是唯一的就可以了。
打开App,查看更多内容
随时随地看视频慕课网APP