「Androidは電気羊の夢を見るか」を読みたい管理者のブログ

仕事などでの色々な発見を記事にしてます。不定期更新。

DataContextとItemsSourceの話

初めてのWPF/Silverlightデータグリッド開発 − @IT
今までXAMLを直接いじってたからデザイナを触るなんて発想は出てこなかったんですが、
これからはデザイナどんどん活用しようと思います (`・ω・´)

なんてね

前にもTwitterで話題にしたような気がするんですが、
コントロールにDataContectを明示的に設定しないと、そのコントロールを包括するコントロールのデータコンテキストをデータコンテキストとして利用します。それを応用すると
複数のViewでViewModelクラスのインスタンスを共有する方法 - 「Androidは電気羊の夢を見るか」を読みたい管理者のブログ
こんなことができちゃったりするわけです。

で、

ItemsSource={Binding}

っていう謎の記述。ずっと謎だった。今日謎が解けた。

上位のコントロールのDataContextをそのままデータソースとして認めますよという意味なのだ。

プロパティ名={Binding Path=プロパティ名}なんてするとDataContextからプロパティの値を持ってきてプロパティにつっこんでくれる
ItemsSource={Binding}
ってするとDataContextをそのままデータソースとして突っ込んでくれる

言ってみればDataContextはそのままでは情報にならない、全ての情報を包括する情報の海みたいなものなんだな。