wpf xaml datatemplate

wpf - Cómo utilizar automáticamente un DataTemplate basado en el DataType del contenido actual de ContentControl



datatemplate wpf c# (2)

El bit x:Type debe estar entre llaves {} :

<DataTemplate DataType="{x:Type vm:TypeAViewModel}">

Cuando intento especificar varias DataTemplates para su uso por un ContentControl para que se use la correcta (basada en el tipo), termino con el contenido que es simplemente el valor de ToString () del contenido.

<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>

En el ejemplo anterior, vería "MyApp.ViewModel.TypeAViewModel" que se muestra cuando un nodo en árbol de TypeAViewModel es devuelto por CurrentlySelectedTreeViewModel. Espero ver mi TypeAViewModelUserControl.

Intenté poner un solo elemento <TextBlock Text = "TESTING" /> en uno de mis DataTemplates solo para ver si el problema estaba relacionado con mis controles de usuario. Mismo resultado.

¿Alguna idea de lo que estoy haciendo mal?

(Por cierto, el CurrentlySelectedTreeViewModel es una propiedad que devuelve el nodo seleccionado actualmente en mi vista de árbol. Parece que funciona muy bien: cuando selecciono nodos en el árbol, aparece el nombre de tipo correcto para el nodo ContentControl).


x:Type es una MarkupExtension , que requiere {} para indicar al compilador XAML.