[.NET] ListView のItemsSource

ListView を使ってObservableCollectionクラスのインスタンスを表示するとき、各カラムに表示するデータは DisplayMemberBinding でプロパティを指定する。

そのプロパティが所属するクラスは ListViewのBindingでもおそらく指定できるのだが、ItemSourceプロパティへの代入だけでも動作する。

MyListView.ItemSource = list;

と代入するインスタンスが

List <MyClass> list = new List<MyClass>();

となっている場合には、ListViewの表示上での削除などがクラスに反映しないのだが、

ObservableCollection<MyClass> list = new ObservableColletion<MyClass>();

としてObservableCollectionを使うと表示上の変化が元に反映される。ObservableCollectionがCollectionChangedイベントをサポートしているからだろう。ObservableCollectionはPropertyChangedもサポートしているので、MyClassがこのEventを投げるタイプのものであれば、Collection自体がこのイベントを中継する形で投げることができるようになっている。

ItemsSourceを指定する方法はListにデータを流し込む方法としては一般的だ。ペツォルドの本 Application = Code + Markupでも、この手法は繰り返し出てくる。

広告

コメントを残す

コメントを投稿するには、以下のいずれかでログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。