Lorsque j'essaie de spécifier plusieurs DataTemplates à utiliser par un ContentControl pour que le bon (basé sur Type) soit utilisé, je me retrouve avec du Contenu qui est simplement le contenu de ContentControl ToString() valeur.Comment utiliser automatiquement un DataTemplate basé sur le type de données Current Content de ContentControl
<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>
Dans l'exemple ci-dessus, je voyais « MyApp.ViewModel.TypeAViewModel » affiché lorsqu'un noeud d'arbre de TypeAViewModel est retourné par CurrentlySelectedTreeViewModel. Je m'attends à voir mon TypeAViewModelUserControl.
J'ai essayé de mettre un seul élément TextBlock Text < Text = "TESTING"/> dans l'un de mes DataTemplates juste pour voir si le problème était lié à mes contrôles utilisateur. Même résultat
Des idées de ce que je fais mal? (En passant, le CurrentSelectedTreeViewModel est une propriété qui retourne le nœud actuellement sélectionné dans ma vue d'arbre.Il semble fonctionner très bien - comme je sélectionne les nœuds dans l'arbre, le nom de type correct pour le nœud apparaît ContentControl).
Essayer de faire la même chose; mon problème était que je n'avais pas mes 'DataTemplates' dans' ContentControl.Resources'. Votre exemple était ma solution! :) – mbmcavoy