Why does the following implicit DataTemplate
not work? Only the commented inline DataTemplate
will work.
Note: If I remove both DataTemplate
s, 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>
DataType
requires the use of x:Type
as the property's type is Object
, so if you type DataType="ns:Type"
you set it to the string "ns:Type"
. If the property's type were Type
(as with Style.TargetType
for example) the XAML processor would automatically convert that string
to a Type
.
Thus here you should write:
<DataTemplate DataType="{x:Type vm:ProductListViewModel}">
<v:ProductListView/>
</DataTemplate>
(The property type is Object
to allow data-templating of XML data, see the documentation for more information on that)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With