我想使用 WinJS 在我的 Windows 8 Metro 应用程序中复制音乐应用程序的歌曲视图。
我正在使用 StorageDataSource 从列表视图中的音乐库中加载文件。这很好用,现在我想按某些属性(例如:专辑)对音乐文件进行分组。
StorageDataSource 不支持分组,所以我正在寻找有关如何进行此操作的提示。它必须高效,因为用户可以在库中拥有许多项目,但我不需要它在添加/删除新文件时自动更新(尽管它会很好)。
我目前的理解是我需要构建 2 个自定义数据源:
一个或 ListView 的 itemDataSource,并且是 StorageDataSource 的包装器。例如:getItemsFromIndex 实现在底层数据源中查询其包装在文字中的项目。我不能只设置 StorageDataSource,因为它的对象是不可变的。
一个用于 listView 的 groupDataSource。当应用程序加载时,我手动构建它一次,通过迭代我的第一个 StorageDataSource 并确定我有多少组,以及每个组从 itemDataSource 索引开始的位置。
它有效,但我想知道是否有更好的方法。在 ListLayout 中设置组似乎也是不可能的,它会强制项目水平显示。
有没有人有关于这里需要什么的高级视图的提示?谢谢。