【发布时间】:2014-12-16 18:58:30
【问题描述】:
在 Windows Phone 8.1 的页面之间传递数据
我发现了这篇很棒的文章:
我理解得很好,
读完这篇文章后我有几个问题是:
[1] 哪种方法更好,在哪些情况下? [2] 这三种方法都有什么好处?
【问题讨论】:
标签: xaml windows-phone-8 microsoft-metro
在 Windows Phone 8.1 的页面之间传递数据
我发现了这篇很棒的文章:
我理解得很好,
读完这篇文章后我有几个问题是:
[1] 哪种方法更好,在哪些情况下? [2] 这三种方法都有什么好处?
【问题讨论】:
标签: xaml windows-phone-8 microsoft-metro
小提示:请说明您使用的是 Silverlight 还是 WinRT,因为它有很大的不同。 我假设您在这里使用 Silverlight。
就像 demas 已经说过的那样:全局变量几乎从来都不是一个好主意。
建议:始终使用 queryString 并且始终只在查询中传递 ID。
这意味着,将您的数据保存在某种存储中,并始终在任何页面上从那里读取数据。 如果您想传递复杂的对象,请将它们放入您的存储中,告诉新页面 id 并在新页面上从存储中加载它。
如果您的应用程序在后台终止(墓碑)并且 在您的详细信息页面上重新启动,它可能始终是您的全球 变量为空。
它还提高了您的可维护性:页面访问的所有数据都将加载到该页面的代码/代码隐藏/视图模型上;您无需检查应用的其他部分即可了解数据的来源。
进一步提示:
将 Silverlight 应用程序想象成“Web 应用程序”对我帮助很大:页面是单独的页面,而 viemodel 是数据库服务器。除了查询字符串之外,没有其他方法可以在这些页面之间传递数据。
【讨论】:
App.xaml.cs 中的公共属性和全局变量会导致命名空间污染并降低应用程序的可测试性,因此我更喜欢使用 QueryString。
另一方面,有时我需要传递复杂对象甚至复杂对象的集合,在这种情况下,我认为 App.xaml.cs 中的公共属性更可取。
【讨论】: