しばやん雑記

ASP.NET とメイドさんが大好きなフリーランスのプログラマーのブログ

ItemsControl と ListBox の違いとか

ListBox を使うと、明示的または暗黙的に ListBoxItem が作成されるけれども、ItemsControl ではじゃあどうなる?と気になったので調べてみると、普通に ContentPresenter が使われてました。
なので ItemsControl.ItemContainerStyle を指定するときには TargetType を ContentPresenter にしないと失敗します。
あと、地味に嵌ったのは ItemContainerStyle の ControlTemplate と ItemTemplate の DataTemplate の違いですね。ItemsPanel の子になるのはコンテナなので、ItemsPanel に対する添付プロパティは ItemTemplate で指定しても効果がないということです。