0

我刚刚开始使用 Windows 8 开发(使用 c#),并且正在将我的一个应用程序移植到 Windows 商店应用程序。本质上,我的应用程序接受用户输入字符串,计算适当的输出并响应用户。所以我使用列表视图来跟踪“对话”。我将用户的输入显示为列表视图元素,然后将输出显示为下一个元素(使用具有颜色等格式的文本块......)。

我想做的是在应用程序终止后使这种“对话”持续存在,但不确定最好的方法。我的第一个想法是在挂起时序列化列表视图对象,然后在加载时对其进行反序列化,但列表视图不可序列化......所以我的下一个想法是将每个输入和输出字符串写入文件并尝试重建列表视图当我加载应用程序时从这些字符串中提取,但我也遇到了一些问题。

所以我很好奇解决这个问题的最佳方法是什么。我希望应用程序开始备份之前已经以相同格式显示的对话,而不是什么。有没有人有任何想法?

4

1 回答 1

2

反正我不会持久化 ListView,你只需要持久化其中的数据。您是否使用 MVVM 类型模型,您的对话可能被捕获为ObservableCollection,然后绑定到 ListView?如果没有,你应该:)

然后您只需要序列化 ​​ObservableCollection(请参阅此处的一个选项)。你坚持它的地方取决于你:

  • LocalFolder将使用基于文件的方法并在本地设备上可用
  • RoamingFolder也将使用基于文件的方法,但使用云在用户拥有的多个设备上同步(并安装了应用程序)
  • 云存储(如Windows AzureWindows Azure 移动服务)将为您提供本质上无限的存储,但需要管理云帐户并为其付费(尽管免费层级可能就足够了)
  • SQLite这样的内存数据库是另一种选择,如果你感兴趣的话,它会给你关系语义。

首先,我会说使用LocalFolder并将您的集合保存到一个文件中,然后当您重新水化它时,简单的数据绑定应该会自动处理显示。在某些时候,您可能需要决定存储多少。您希望您的应用程序能够响应用户(“快速而流畅”),因此您可能需要在请求时引入数据,而不是一次全部引入(也许是版本 2 的功能!)

于 2012-12-21T03:38:30.453 回答