Why does the following implicit DataTemplate not work? Only the commented inline DataTemplate will work.
Note: If I remove both DataTemplates, I see a string representation of the ProductListView full type name.
<Window.Resources>
<DataTemplate DataType="vm:ProductListViewModel">
<v:ProductListView/>
</DataTemplate>
</Window.Resources>
<TabControl ItemsSource="{Binding Tabs}" TabStripPlacement="Left">
<TabControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Key}"/>
</DataTemplate>
</TabControl.ItemTemplate>
<TabControl.ContentTemplate>
<DataTemplate>
<ContentPresenter Content="{Binding Value}">
<!--ContentPresenter.ContentTemplate>
<DataTemplate DataType="vm:ProductListViewModel">
<v:ProductListView/>
</DataTemplate>
</ContentPresenter.ContentTemplate-->
</ContentPresenter>
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>
DataTyperequires the use ofx:Typeas the property’s type isObject, so if you typeDataType="ns:Type"you set it to the string"ns:Type". If the property’s type wereType(as withStyle.TargetTypefor example) the XAML processor would automatically convert thatstringto aType.Thus here you should write:
(The property type is
Objectto allow data-templating of XML data, see the documentation for more information on that)