Pregunta

Estoy comenzando un nuevo proyecto en Wpf, y ahora estoy estudiando el uso de Prism. Por ahora simplemente estoy tratando de configurar la navegación de la aplicación utilizando Prism. Desafortunadamente, mi falta de experiencia con el marco hace que sea un poco difícil comenzar ..

Para ser más preciso acerca de mi primer desafío, tengo una aplicación con un menú " navegación / menu " región y una " principal " región. La región de navegación será la misma para todas las diferentes vistas de la región principal y, por lo tanto, defino el menú en el shell.xaml. Al hacer clic en cualquier elemento del menú, me gustaría agregar una vista a la región utilizando Prism. Primero; ¿Es esto algo para lo que uno usará normalmente Prism? Si es así; ¿Cuál es el enfoque típico? Y me refiero a un nivel más estructural ..

Mi impresión es que Prism hará que mi aplicación sea mucho más escalable al final, y veo que obtengo otras ventajas, como el contenedor IoC. Así que me gustaría usarlo, si solo pudiera seguir los primeros pasos ...

¿Fue útil?

Solución

Tengo una muestra que utiliza un poco más de la sensación CAG para los módulos que contribuyen a un menú y cómo agregar vistas a una región. Debería aclarar las cosas un poco.

http://dl.getdropbox.com/u/376992/CAGMenus.zip

Espero que esto ayude, Anderson

Otros consejos

Bumbuska,

Prism será una excelente manera de lograr esta funcionalidad y es bastante fácil de hacer una vez que comprenda los principios.

La forma en que lo haré es agregar oyentes de eventos en el evento de inicio de su Región Principal. Cuando selecciona su elemento en el menú, dispara el evento. Cuando eso suceda, su región principal se encargará del evento y borrará la vista actual de la región principal. Luego cree la nueva vista que desea usar y agréguela.

Su región principal debería verse así:

public void Initialize()
{
    Events.PageEvents.ClickedEvent1 ce1 = this.eventAggregator.GetEvent<Events.PageEvents.ClickedEvent1>();
    ce1.Subscribe(LoadView, ThreadOption.UIThread, true);
}

private void LoadView(Events.HomePageEvents.Clicked clicked1)
{
    IRegion mainRegion = RegionManager.Regions["MainRegion"];
    foreach (object view in new List<object>mainRegion.Views))
    {
        RegionManager.Regions["MainRegion"].Remove(view);
    }

    IModule firstModule = Container.Resolve<Modules.FirstModule>();
    firstModuleModules.Initialize();

}

Espero que te indique en la dirección correcta. Avíseme si necesita más información.

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