FC2ブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

CollectionViewSourceのViewを遅延更新させる

 CollectionViewSourceを利用して並べ替え等を行う際に条件によっては無駄な更新が発生します。
 例えば、並べ替え条件を複数指定する場合、一つ目の条件を追加した時点でViewが更新されるのは完全に無駄です。
 コレクションのアイテム数が少ない場合は気にする必要はありませんが、アイテム数が多いときはこの無駄な更新によるパフォーマンスの悪化が気になってくることもあります。
 そんな場合はViewの遅延更新を行うことで無駄な更新を避け、パフォーマンスを改善することができます。
public CollectionViewSource ItemsViewSource { get; private set; }

public void ValueSort()
{
    using (ItemsViewSource.DeferRefresh())
    {
        ItemsViewSource.SortDescriptions.Clear();
        ItemsViewSource.SortDescriptions.Add(new SortDescription("Value", ListSortDirection.Ascending));
    }
}
 遅延更新を行いたい場合はDeferRefreshメソッドを使用します。
 DeferRefreshメソッドは戻り値にIDisposableインスタンスを返し、Disposeメソッドが呼ばれた際にViewを更新します。
 そのため通常はサンプルコードの様にusingステートメントを使用します。
 あとはusingステートメント内で並べ替え等の条件を変更するだけです。
スポンサーサイト

テーマ : プログラミング
ジャンル : コンピュータ

コメントの投稿

非公開コメント

カレンダー
10 | 2018/11 | 12
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -
全記事表示リンク

全ての記事を表示する

カテゴリ
タグリスト

月別アーカイブ
11  09  08  07  06  05  04  03  02  01  12  11  10  09  08  07  06  04  03  02  01  12  11  10  09  08  07  06  05  04  03  02  01  12  11  10  09 
最新記事
リンク
最新コメント
検索フォーム
Amazon
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。