ObservableCollectionをSortしてListViewで表示2016年03月01日 18:21


サーバ名でSortしたListView

SSDPで集めてきたメディアサーバをListViewで一覧表示すると、応答のあった順になるので、毎回、並び順が変わる。操作性を考えると、いつも同じ順のほうがいい。

ListViewの表示内容は、メディアサーバと通信して集めるので、サーバからの応答を受けSourceを更新し、更新イベントを発生させて書き換える。このため、Sourceには、ObservableCollectionを用いるが、OrderByやGroupByといった並び替えの機能が用意されていない。

Sort機能を入れたObservableCollection

探してみると、ArrayListのAdapterでくるんであげるのがいいらしい。intやStringの例はすぐに見つかるが、少し込み入ったclassの例は見つからないので、記しておく。

上の例では、IComparerを継承し、MediaServerクラスのNameプロパティを比較するクラスを設け、ArrayListのSortに用いて並び替える。結果、最初の図のようにListViewの表示順を、サーバ名順にできた。