0

我需要将大量数据从一个页面传递到另一个页面。据我所知,我有两个选择, PhoneApplicationService和IsolatedStorageSettings。PhoneApplicationService.Current.State vs IsolatedStorageSettings windows phone

PhoneApplicationService在页面之间传递时会产生很多延迟。所以,我使用了IsolatedStorageSettings,但是我在从IsolatedStorageSettings中移除一个项目时收到了一些异常对象的创建。

哪个最适合处理大型复杂物体?

在从IsolatedStorageSettings中移除项目时实际发生了什么?

感谢

编辑: 当我明确或删除IsolatedStorageSettings一个项目,对于已经存储的密钥的新对象是创建 。

示例代码:

   if (IsolatedStorageSettings.ApplicationSettings.Remove("FormFields")) 
       { 
        IsolatedStorageSettings.ApplicationSettings.Add("FormFields", app.response);      
       } 
       else 
       { 
        IsolatedStorageSettings.ApplicationSettings.Add("FormFields", app.response);      
       } 
+1

因此,使用'IsolatedStorage'将数据写入存储(如所暗示的)。这意味着数据本质上是“永久”并写入磁盘,这会导致磁盘写入延迟。你真正想要的是与'ServiceLocator'结合使用的'ViewModel'。这种模式允许你做的是有一个地方存储(基本上)某些类的单例('ViewModel's),它们存储View所需的数据。你应该检查MvvmLight,因为它们提供了一个非常简单的实现'ViewModel'和'ServiceLocator',它应该是可移植的(因为你包括WP7和WP8)。 – 2014-09-22 18:37:40

+0

谢谢Nate。是的,你说的是对的,我已经实现了维护ViewModel,所以现在切换回不同的方法涉及很多工作,但我只是寻找哪一个是从一个页面传递到另一个页面的最佳方式。 – 2014-09-23 02:08:14

+0

然后关键是ServiceLocator。这可以让你轻松地说一些像ViewModelLocator.MyPageVM。那么你不需要在页面之间传递引用;他们可以静态检索它们。 – 2014-09-23 02:24:48

回答

0

你为什么不只是使用App类?

public partial class App : Application 
{ 
    public YourDataObject ApplicationDataObject { get; set; } 
} 

你可以在任何页面使用它,例如跳转到下一页之前设定值:

(Application.Current as App).ApplicationDataObject = new YourDataObject(); 

和检索值,一旦你在正确的页面:

YourDataObject yourData = (Application.Current as App).ApplicationDataObject; 

这不是很美,但它非常简单,也许在你的情况下,它是最好的解决方案。

+0

您的意思是与State和IsolatedStorage相比,它快速且简单吗?我需要最佳和最优化的方式。谢谢 – 2014-09-23 02:07:15

+0

@PradeepAJ它将值分配给全局变量一样快速简单。在这种情况下,全局变量将是ApplicationDataObject,一旦你不需要这些值,你可以设置空值,GC应该释放内存。 – Gooseman 2014-09-23 02:33:22

+0

是的,这是我目前实施的最佳方式。谢谢 – 2014-09-23 02:37:00

相关问题