Tengo dos vistas que comparten una colección observable de cierto viewmodel, pero con diferentes parámetros de vista de colección. ¿Cuál es la forma correcta de implementarlo en MVVM Light? ¿Hay algún soporte para máquinas virtuales no estáticas? ¿Cómo puedo administrar su vida útil y disponer de ellos?Static ViewModels vs installed ViewModels
Respuesta
Algunos de Laurent examples of MVVM Light hacen uso de un ViewModelLocator con instancias estáticas de ViewModel (tipo singleton). Tenga en cuenta la interfaz ICleanup
. Además, las máquinas virtuales no estáticas generalmente deben ser MEFed o construidas en el constructor de View.
Para la gestión de ViewModels, generalmente se usa el patrón IOC. En el marco de MVVM Light, es una implementación SimpleIc.
Yo prefiero usar Ninject - http://www.ninject.org/
No!
Por defecto, los objetos resueltos de SimpleIoc son singletons. Para evitar esto, debe pasar un identificador único como parámetro del método ServiceLocator.GetInstance.
ver más abajo:
Tenemos dos propiedades que regresan el mismo modelo de vista. Uno devuelve un singleton y el otro devolverá una nueva instancia cada vez.
class ViewModelLocator
{
static ViewModelLocator()
{
ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
if (ViewModelBase.IsInDesignModeStatic)
{
SimpleIoc.Default.Register<IDataService, Design.DesignDataService>();
}
else
{
SimpleIoc.Default.Register<IDataService, DataService>();
}
SimpleIoc.Default.Register<MainViewModel>();
SimpleIoc.Default.Register<SecondViewModel>();
}
public MainViewModel MainAsSingleton
{
get { return ServiceLocator.Current.GetInstance<MainViewModel>(); }
}
public MainViewModel MainAsDiffrentInstanceEachTime
{
get { return ServiceLocator.Current.GetInstance<MainViewModel>(Guid.NewGuid().ToString()); }
}
}
- 1. ViewModels y rendering
- 2. UI Threading con ViewModels
- 3. ASP.NET MVC - ViewModels For Edit
- 4. ObservableObject o INotifyPropertyChanged en ViewModels
- 5. MVC mapping viewmodels to POCOs
- 6. Enlazar varias vistas a varios viewmodels
- 7. MVVM: comunicación entre el modelo y ViewModels
- 8. ¿Cómo está rellenando/validando sus ViewModels?
- 9. ASP.NET MVC: ¿usar entidades EF como viewmodels?
- 10. Múltiples ViewModels asociados con una única vista
- 11. Modelos, ViewModels, dtos en MVC 3 aplicación
- 12. Diseñando un repositorio de MVC usando ViewModels
- 13. MVC 3 ModelState.IsValid con múltiples ViewModels
- 14. ¿Cómo funciona DataAnnotationsModelBinder con ViewModels personalizados?
- 15. MVVM Light - Multiple ViewModels (y los conecta)
- 16. Cómo enviar parámetros entre viewmodels usando viewmodellocator
- 17. Cómo deshacerse de ViewModels en Caliburn Micro y Castle Windsor
- 18. WPF MVVM: ¿Cómo se comunican ViewModels entre sí?
- 19. usando ViewModels para acciones POST en MVC elegantemente
- 20. ASP.NET MVC: ¿Nesting ViewModels entre sí, antipattern o no?
- 21. MVVM: ¿Cómo manejar la interacción entre ViewModels anidados?
- 22. Prisma: ¿Compartir datos entre ViewModels cargados en una región?
- 23. MVVM - Share/Reuse ViewModels entre Silverlight y WPF
- 24. ¿Debería mi ViewModel tener una ObservableCollection de Views o ViewModels?
- 25. Cómo mantener colecciones de viewmodels y modelos sincronizados
- 26. Anular la suscripción a eventos de EventAggregator en ViewModels
- 27. ¿Es una mala práctica usar muchos viewmodels en asp.net mvc
- 28. ¿Cómo puedo vincular una ObservableCollection de ViewModels a un MenuItem?
- 29. Ejecutando el comando viewmodels al entrar en TextBox
- 30. Datos obsoletos en MVVM ViewModels con inyección de dependencia
¿Está utilizando un contenedor DI como Unity o MEF? – PVitt
No, utilizo la plantilla básica de MVVM Light. –