¿Cuál es el mejor método para cargar dinámicamente Vistas desde un control de navegación en Prisma

StackOverflow https://stackoverflow.com/questions/1678423

  •  16-09-2019
  •  | 
  •  

Pregunta

He implementado la navegación a través de mi aplicación mediante un control de menú que publican un evento usando EventAggregator el clic del elemento de menú. Algo parecido a como se muestra a continuación:

this.eventAggregator.GetEvent<ViewRequestedEvent>()
                    .Publish(new BusinessObject.Model.MenuModel
                    {
                        Module = "Dashboard",
                        PresenterClass = "DashboardViewModel"
                    });

La mayoría de los módulos en mi solicitud son abonados a este evento. Ellos usan un filtro para suscribirse sólo aquellos eventos relevantes para el módulo

this.eventAggregator.GetEvent<ViewRequestedEvent>()
            .Subscribe(LoadViewRequest, ThreadOption.UIThread, true, i => i.Module == "Dashboard");

Solicitud de Vista se maneja de esta manera:

private void LoadRequestedView(MenuModel menuItem)
{
    try
    {
        IDashboardViewModel viewModel = this.container.Resolve(Type.GetType(menuItem.PresenterClass)) as IDashboardViewModel;
        this.regionManager.Regions["ViewRegion"].Add(viewModel.View);
        this.regionManager.Regions["ViewRegion"].Activate(viewModel.View);
        this.eventAggregator.GetEvent<ViewNotificationEvent>().Publish(menuItem.Description);
    }
    catch (ResolutionFailedException) { }
}

¿Cómo califica esta aplicación? Si usted piensa que es una mierda, me ayude a mejorar o sugerir una alternativa mejor.

¿Fue útil?

Solución

Yo creo que hay una cierta falta de separación de las preocupaciones con este modelo. Yo por lo general trato de mantener la presentación de la Concha. Ver esta pregunta por cómo implementar esta Wold. Se simplifica las cosas y abstrae la idea de un RegionManager lejos de los Módulos:

La integración de módulos con aplicación en Prisma aka CompositeWPF

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top