【发布时间】:2014-09-22 14:58:13
【问题描述】:
我需要将大量数据从一个页面传递到另一个页面。据我所知,我有两个选择, PhoneApplicationService 和独立存储设置。
PhoneApplicationService 在页面之间传递时会产生很多延迟。因此,我使用了 IsolatedStorageSettings,但在从 IsolatedStorageSettings 中删除项目时,我创建了一些异常的对象。
哪个是处理大型复杂对象的最佳选择?
从 IsolatedStorageSettings 中删除项目时实际发生了什么?
谢谢
编辑: 当我从 IsolatedStorageSettings 中清除或删除项目时,已存储密钥的新对象是 已创建。
示例代码:
if (IsolatedStorageSettings.ApplicationSettings.Remove("FormFields"))
{
IsolatedStorageSettings.ApplicationSettings.Add("FormFields", app.response);
}
else
{
IsolatedStorageSettings.ApplicationSettings.Add("FormFields", app.response);
}
【问题讨论】:
-
因此,使用
IsolatedStorage将数据写入存储(暗示)。这意味着数据本质上是“永久的”并写入磁盘,这将导致磁盘写入延迟。您真正要查找的是ViewModel与ServiceLocator的组合。这种模式允许你做的是有一个地方存储(基本上)某些类的单例(ViewModels),这些类存储视图所需的数据。您应该查看 MvvmLight,因为它们提供了一个非常简单的实现ViewModel和ServiceLocator,它们应该是可移植的(因为您包括 WP7 和 WP8)。 -
谢谢内特。是的,你说的是对的,我已经实现了维护 ViewModel,所以现在切换回不同的方法需要做很多工作,但我只是在寻找从一个页面传递到另一个页面的最佳方法。
-
关键是ServiceLocator。这让您可以轻松说出 ViewModelLocator.MyPageVM 之类的内容。那么你就不需要在页面之间传递引用了;他们可以静态检索它们。
标签: c# windows-phone-7 windows-phone-8 windows-phone tombstoning