c# - tag - Navegando a través de múltiples vistas secundarias contenidas en la ventana principal
tag c# (1)
Una de las formas más sencillas de asociar cualquier tipo de datos con controles XAML es utilizar un DataTemplate
. Por lo tanto, simplemente puede agregar algo como esto a su Application.Resources
y siempre que no establezca las propiedades x:Key
en DataTemplate
s , entonces el Framework las aplicará explícitamente cada vez que encuentre instancias de sus modelos de vista. :
<DataTemplate DataType="{x:Type ViewModels:HomeViewModel}">
<Views:HomeView />
</DataTemplate>
...
<DataTemplate DataType="{x:Type ViewModels:MainViewModel}">
<Views:MainView />
</DataTemplate>
Entonces, mostrar la vista es tan simple como esto:
<ContentControl Content="{Binding YourViewModelProperty"} />
En el código detrás, o su modelo de vista:
YourViewModelProperty = new MainViewModel();
A menudo es útil crear una clase base para sus modelos de visualización y luego la lata YourViewModelProperty
de ese tipo y podrá intercambiarlos utilizando la misma propiedad y ContentControl
.
ACTUALIZACIÓN >>>
La idea general es que tiene una clase MainViewModel
con datos de una propiedad BaseViewModel
vinculados a un ContentControl
en MainWindow.xaml
... los controles de navegación también deberían estar en MainWindow.xaml
y no en las vistas mismas. De esta forma, la clase MainViewModel
es responsable de cambiar la propiedad a las instancias de modelo de vista relevantes cuando recibe Command
navegación de MainWindow.xaml
.
Estoy trabajando en una aplicación WPF MVVM donde necesito tener una ventana principal con solo un logotipo y tiene que mostrar las vistas secundarias dentro de ella. No tengo ningún control en la ventana principal, todos los controles residen en la vista infantil, por ejemplo, botones Siguiente, Atrás, Cancelar y algunos bloques de texto, etc. Ahora, si los usuarios seleccionan el botón Siguiente en la vista secundaria, tengo que dibujar o cargar el siguiente vista de niño dentro de la ventana principal. Si hace clic en el botón Atrás, tengo que regresar a la vista secundaria anterior. Básicamente, estoy cambiando las vistas secundarias dependiendo de qué botón se haga clic. También estoy manteniendo diferentes modelos de vista para cada vista de niño. Ahora el problema es que no puedo imaginar cómo debo vincular las vistas secundarias a sus respectivos modelos de vista. Esta aplicación es similar a algunas aplicaciones de instalación donde se muestran diferentes diálogos según la selección y el usuario hace clic en el botón. Soy nuevo en este wpf y no quiero usar MVVM Light, Prism, etc. Cualquier ayuda detallada será de gran ayuda. apreciado. Gracias por adelantado.