0

Windows 8 開発 (c# を使用) を始めたばかりで、アプリケーションの 1 つを Windows ストア アプリに移植する作業を行っています。基本的に、私のアプリケーションはユーザー入力文字列を受け取り、適切な出力を計算して、ユーザーに応答します。そのため、リスト ビューを使用して「会話」を追跡しています。ユーザーの入力をリスト ビュー要素として表示し、出力を次の要素として表示します (色のような書式設定のテキスト ブロックを使用します...)。

私がやりたいのは、アプリが終了してもこの「会話」を持続させることですが、これを行う最善の方法がわかりません。最初に考えたのは、一時停止時にリスト ビュー オブジェクトをシリアル化し、ロード時に逆シリアル化することでしたが、リストビューはシリアル化できません...次に考えたのは、各入力文字列と出力文字列をファイルに書き出して、リストビューを再構築することでした。アプリケーションをロードするときにこれらの文字列から削除されますが、これにもいくつかの問題があります。

ですから、これをどうするのが最善の方法なのか、私は興味があります。以前の会話が同じフォーマットで表示されている状態でアプリケーションを起動したいと思います。誰にもアイデアはありますか?

4

1 に答える 1

2

とにかく ListView を永続化するつもりはありません。その中のデータを永続化するだけで済みます。会話がおそらくObservableCollectionとしてキャプチャされ、ListView にバインドされる MVVM 型モデルを使用していますか? そうでない場合は、次のことを行う必要があります:)

次に、ObservableCollection をシリアル化する必要があります (ここで 1 つのオプションを参照してください)。どこに永続化するかは、あなた次第です:

  • LocalFolderはファイル ベースのアプローチを使用し、ローカル デバイスで使用できます。
  • RoamingFolderもファイル ベースのアプローチを使用しますが、ユーザーが所有する (アプリがインストールされている) 複数のデバイス間でクラウドを使用して同期します。
  • クラウド ストレージ ( Windows AzureWindows Azure Mobile Servicesなど) は、本質的に無限のストレージを提供しますが、クラウド アカウントを管理し、その料金を支払う必要があります (ただし、無料利用枠で十分な場合があります)。
  • SQLiteのようなインメモリ データベースは、もう 1 つの選択肢であり、関心のあるリレーショナル セマンティクスを提供します。

まず始めに、LocalFolderを使用してコレクションをファイルに永続化します。その後、再水和すると、単純なデータ バインディングが自動的に表示を処理するはずです。ある時点で、保存する量を決定する必要がある場合があります。アプリケーションをユーザーに対してレスポンシブ (「高速で滑らか」) にする必要があるため、そのためには、一度にすべてではなく、要求されたときにデータを取り込む必要がある場合があります (おそらくバージョン 2 の機能です!)

于 2012-12-21T03:38:30.453 に答える