0

WinJSを使用してWindows8Metroアプリで、ミュージックアプリの曲ビューを複製したいと思います。

StorageDataSourceを使用して、リストビューで音楽ライブラリからファイルをロードしています。これはうまく機能します。次に、音楽ファイルをいくつかのプロパティ(例:アルバム)でグループ化します。

StorageDataSourceはグループ化をサポートしていないため、これを行うためのヒントを探しています。ユーザーはライブラリに多くのアイテムを含めることができるため、効率的である必要がありますが、新しいファイルが追加/削除されたときに自動更新する必要はありません(ただし、それは素晴らしいことです)。

私の現在の理解は、2つのカスタムデータソースを構築する必要があるということです。

  1. 1つまたはListViewのitemDataSourceであり、StorageDataSourceのラッパーです。例:getItemsFromIndex実装は、リテラルでラップするアイテムについて、基になるdataSourceにクエリを実行します。そのオブジェクトは不変であるため、StorageDataSourceを設定することはできません。

  2. listViewのgroupDataSource用に1つ。最初のStorageDataSourceを繰り返し処理し、グループの数と、itemDataSourceインデックスの観点から各グループの開始位置を決定することにより、アプリの読み込み時に手動でビルドします。

それは機能しますが、もっと良い方法があるのではないかと思います。また、ListLayoutにグループを含めることは不可能のようであり、アイテムを強制的に水平に表示します。

ここで必要なものの高レベルのビューのヒントを誰かが持っていますか?ありがとう。

4

1 に答える 1

0

まず、リストレイアウトを使用している場合、グループ化はサポートされていないというのは正しいことです。グリッドレイアウトでのみサポートされます。カスタムアイテムテンプレートレンダリング機能を使用して、必要に応じてスタイルを設定できるグループの偽のデータアイテムを挿入することを選択できます。

残りの作業にはある程度の学習が必要です。データソースAPIの詳細を実際に理解するには、ListViewサンプルを確認することをお勧めします。

1つのオプションは、computerDataSourceGroups関数を指定してListViewに計算させることです。http: //msdn.microsoft.com/en-us/library/windows/apps/hh700578.aspx

もう1つのオプションは、StorageDataSourceソースが適切に表示されることです。生のデータソースとしてこれにグループ化を追加することは、実際、最も効率的で保守可能なソリューションである可能性があります。データソースを仮想化せずに、リストビューの仮想化を引き続き活用できるようになることを願っています。ソースは、VSのui.jsの参照ノードにあります。

于 2012-07-28T23:01:22.727 に答える