WPFではコンテンツに対してもデータテンプレートを利用できる

下記のXAMLWPFSilverlightの両方で確認すると、表示結果が異なります。


XAML

<ListBox>
    <TextBlock Text="項目1"/>
    <TextBlock Text="項目2"/>
    <ListBox.ItemTemplate>
        <DataTemplate>
            <StackPanel>
                <TextBlock Text="データテンプレート有効"/>
                <ContentPresenter Content="{Binding}"/>
            </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>


WPF



Silverlight



ItemTemplateのデータテンプレートはItemsSourceを使ったときだけ有効だと思っていましたが、WPFのListBoxコントロールやComboBoxコントロールはコンテンツに対しても有効なようです。なお、なぜかItemsControlを使うと無効になります。