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. MVC mapping viewmodels to POCOs
- 4. ObservableObject o INotifyPropertyChanged en ViewModels
- 5. ASP.NET MVC - ViewModels For Edit
- 6. Múltiples ViewModels asociados con una única vista
- 7. ASP.NET MVC: ¿usar entidades EF como viewmodels?
- 8. MVVM Light - Multiple ViewModels (y los conecta)
- 9. Diseñando un repositorio de MVC usando ViewModels
- 10. MVC 3 ModelState.IsValid con múltiples ViewModels
- 11. Cómo enviar parámetros entre viewmodels usando viewmodellocator
- 12. ¿Cómo funciona DataAnnotationsModelBinder con ViewModels personalizados?
- 13. ¿Cómo está rellenando/validando sus ViewModels?
- 14. Enlazar varias vistas a varios viewmodels
- 15. Modelos, ViewModels, dtos en MVC 3 aplicación
- 16. MVVM: comunicación entre el modelo y ViewModels
- 17. MVVM: ¿Cómo manejar la interacción entre ViewModels anidados?
- 18. Ejecutando el comando viewmodels al entrar en TextBox
- 19. usando ViewModels para acciones POST en MVC elegantemente
- 20. ¿Cómo puedo vincular una ObservableCollection de ViewModels a un MenuItem?
- 21. ¿Cuándo es correcto usar ViewData en lugar de ViewModels?
- 22. MVVM - Share/Reuse ViewModels entre Silverlight y WPF
- 23. Anular la suscripción a eventos de EventAggregator en ViewModels
- 24. ¿Debería mi ViewModel tener una ObservableCollection de Views o ViewModels?
- 25. Cómo mantener colecciones de viewmodels y modelos sincronizados
- 26. ¿Es una mala práctica usar muchos viewmodels en asp.net mvc
- 27. Datos obsoletos en MVVM ViewModels con inyección de dependencia
- 28. Cómo deshacerse de ViewModels en Caliburn Micro y Castle Windsor
- 29. WPF MVVM: ¿Cómo se comunican ViewModels entre sí?
- 30. Simplificar el comando RelayCommand/Delegate en WPF MVVM ViewModels
¿Está utilizando un contenedor DI como Unity o MEF? – PVitt
No, utilizo la plantilla básica de MVVM Light. –