MVVM パターンの ViewModel の作成の仕方について聞かれることがたまにある。 MVVM パターンの ViewModel は View に対して1つ作る。 Window や UserControl に対して作成するのは分かりやすいが Panel やその継承など 関連性が高い情報をまとめて ViewModel にすることもできる。 ItemsControl やその継承は ViewModel のコレクションとして持つことになる。 View は、VisualTreeHelper や Snoop を見ればわかるように Tree 構造になっている。 したがって、 ViewModel も Tree 構造になるべきだ。 具体的には、親は VisualTree に合った 子供の VM を ContentControl やその派生クラスなら インスタンスを持って管理し、 ItemsControl