Estoy tratando de crear un conjunto de formularios de mantenimiento CRUD típicos en WPF, que serán prácticamente iguales, excepto que funcionan en diferentes registros de bases de datos.Seleccionar el control del usuario según el tipo de DataContext
En lugar de crear una nueva clase de ventana para cada una, intento usar una sola clase de ventana que crea una instancia con una clase ViewModel diferente para cada tabla de base de datos, y para la cual tengo definido un UserControl diferente para cada ViewModel.
Así que, si instalo la ventana con su DataContext configurado en una instancia de Record1ViewModel, quiero mostrarlo en la ventana usando un Record1UserControl, si está configurado en una instancia de Record2ViewModel, quiero mostrarlo usando un Record2UserControl .
He verificado que ambos controles funcionan bien, definiéndolos cada uno directamente en el XAML de la ventana. Pero no he descubierto cómo seleccionar uno u otro, según el tipo de ViewModel.
Esto no está funcionando:
<myWindow.Resources>
<DataTemplate x:Key="{x:Type ViewModels:Record1ViewModel}">
<MaintenanceControls:Record1 />
</DataTemplate>
<DataTemplate x:Key="{x:Type ViewModels:Record2ViewModel}">
<MaintenanceControls:Record1 />
</DataTemplate>
</myWindow.Resources>
<ContentPresenter Content="{Binding}" />
Lo que obtengo, en el ContentPresenter, es el nombre del tipo. Las plantillas de datos no se utilizan.
¿Alguna idea?
En realidad, esto funciona, si uso