When I attempt to specify multiple DataTemplates for use by a ContentControl so that the correct one (based on Type) is used, I end up with Content that is simply the Content's ToString() value.
<ContentControl DataContext="{Binding MyTreeRootViewModels}" Content="{Binding /, Path=CurrentlySelectedTreeViewModel}">
<ContentControl.Resources>
<DataTemplate DataType="x:Type vm:TypeAViewModel">
<StackPanel>
<local:TypeAUserControl />
</StackPanel>
</DataTemplate>
<DataTemplate DataType="x:Type vm:TypeBViewModel">
<StackPanel>
<local:TypeBUserControl />
</StackPanel>
</DataTemplate>
</ContentControl.Resources>
</ContentControl>
In the example above I would see MyApp.ViewModel.TypeAViewModel
displayed when a tree node of TypeAViewModel
is returned by CurrentlySelectedTreeViewModel
. I expect to see my TypeAViewModelUserControl
.
I've tried putting a single <TextBlock Text="TESTING"/>
element in one of my data templates just to see if the problem was related to my user controls. Same result.
Any ideas what I am doing wrong?
(By the way, the CurrentlySelectedTreeViewModel
is a property that returns the currently selected node in my TreeView
. It seems to work just fine - as I select nodes in the tree, the correct type name for the node appears ContentControl
).
DataTemplates
in theContentControl.Resources
. Your example was my solution! :) – Thermometer