por lo que en los ejemplos de MVVM clásicos que he visto Las definiciones de DataTemplate se utilizan para mapear Modelos de Vista a Vistas, ¿cuál es la forma estándar de hacerlo en el marco de MVVM Light? y dónde deberían ubicarse las asignaciones? Los siguientes son ejemplos de lo que estoy haciendo ahora y de lo que estoy hablando, ¡la capacidad de mezcla es importante para mí!¿Cuál es la convención estándar para definir la vista anidada: mapeo de viewmodel en MVVM Light
ventana principal:
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
x:Class="STS2Editor.MainWindow"
Title="{Binding ApplicationTitle, Mode=OneWay}"
DataContext="{Binding RootViewModel, Source={StaticResource Locator}}">
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Skins/ApplicationSkin.xaml" />
<ResourceDictionary Source="Resources/ViewMappings.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
<Grid>
<ContentControl Content="{Binding ApplicationManagementViewModel}" HorizontalAlignment="Left" VerticalAlignment="Top"/>
</Grid>
</Window>
En el código anterior, mi clase RootViewModel tiene una instancia de la clase ApplicationManagementViewModel con el mismo nombre de la propiedad:
public ApplicationManagementViewModel ApplicationManagementViewModel {get {...} set {...} }
que hacen referencia al ResourceDictionary "ViewMappings.xaml "para especificar cómo mi modelo de vista se representa como una vista.
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:STS2Editor.ViewModel">
<DataTemplate DataType="{x:Type local:ApplicationManagementViewModel}">
<local:ApplicationManagementView/>
</DataTemplate>
</ResourceDictionary>
¿Debería hacer este tipo de cosas usando ViewModelLocator? ¿Qué hay de las colecciones de modelos de vista?
Me doy cuenta de que uno de los grandes problemas con MVVM es una FALTA de una metodología unificada. – Firoso
No creo que sea un problema de MVVM per se. Es un patrón, con múltiples implementaciones. Lo mismo con MVC u otros. No lo considero un problema, realmente depende de la situación y el problema que está tratando de resolver. – LBugnion
Tengo preguntas muy similares. ¿Entonces DataTemplates es lo suficientemente bueno para WPF? Quiero un tipo de región Prism, pero sin Prism. – nportelli