Inicio del proyecto – Play Silverlight

En esta entrada iniciaré desde cero una aplicación Silverlight explicando cómo organizar la solución, poniendo en práctica los preceptos de Prism y el modelo MVVM que se vieron en la entrada anterior.

En primer lugar dividiremos la solución en cuatro carpetas lógicas: External Dependencies, donde incluiremos las dll que hagan falta; Data, carpeta en la que se incluirán los proyectos correspondientes al modelo de datos; Silverlight, con los proyectos relacionados con la interfaz de usuario; y Web, en la que se incluirá la aplicación web.

Organización de Núcleo y Módulos de la aplicación

Creamos un primer proyecto que será el núcleo de la aplicación. Dicho proyecto estará compuesto por el xaml de la página principal y una clase, que llamaremos Bootstrapper, que será la encargada de lanzar la aplicación.

Esta es la clase de inicialización necesaria para aplicaciones construidas utilizando Prism, que proporciona un mayor control sobre cómo los componentes de la aplicación se conectan. Prism (CAL) incluye una clase abstracta de inicialización UnityBootstrapper que gestiona la inicialización utilizando el contenedor de Unity. Muchos de los métodos de esta clase son virtuales y hay que sobreescribirlos con nuestra configuración. En principio, serán dos los que métodos que sobreescribiremos: CreateShell y GetModuleCatalog.

 

public class Bootstrapper : UnityBootstrapper
{
     protected override  DependencyObject CreateShell()
     {
         Shell shell =  Container.Resolve<Shell>();
         Application.Current.RootVisual = shell;
         return shell;
     }

     protected override  IModuleCatalog GetModuleCatalog()
     {
         ModuleCatalog catalog = new  ModuleCatalog();
         catalog.AddModule(typeof(DefaultModule));
         return catalog;
     }
}
<code>

El primero de ellos, creará una nueva instancia de la página principal y que mostrará por pantalla. El segundo, por su parte, tiene por objetivo crear un catálogo de módulos.

a

Creación de un Módulo de Aplicación

Un módulo consiste en un componente con funcionalidad propia y reutilizable con el que pueden conformarse interfaces de usuario compuestas.

A la hora de desarrollar nuestra aplicación, no sólo debemos decidir cuáles son las secciones de las que constará, sino también qué elementos conformarán cada una de esas secciones, si son reutilizables, que dependencias existirían entre ellos, etc. Para, de esta manera, hacer un diseño modular inteligente y fácilmente mantenible.

En esta sección, en la que describiremos la creación de un módulo, iremos describiendo cómo esta implementado el patrón MVVM. Crearemos un proyecto independiente para cada módulo, en el que se distiguirán 3 elementos: La clase que representa al módulo (DefaultModule), que implementará la interfaz IModule; la vista, formada por un fichero xaml y su cs (C#)  asociada (DefaultView); y la vista-modelo con la que se hará la asociación entre modelo y vista (DefaultModelView).

La clase que representa al módulo, tendrá una propiedad de tipo IRegionManager que contendrá una referencia al gestor de regiones. También contendrá un método Initialize() en el que se deberá registrar la vista del módulo (DefaultView) en cuestión con un nombre concreto (DefaultRegion).


this.regionManager.RegisterViewWithRegion("DefaultRegion", typeof(DefaultRegion));

Con el módulo creado y registrado, sólo falta incluirlo en el xaml en el que finalmente se mostrará dicho módulo. Primero, se ha de incluir la referencia a Microsoft.Practices.Composite.Presentation.Regions, incluida en el ensamblado Microsoft.Practices.Composite.Presentation.

xmlns:Regions="clr-namespace:Microsoft.Practices.Composite.Presentation.Regions  assembly=Microsoft.Practices.Composite.Presentation"

El módulo irá embebido en un control ContentControl,  para lo cual, necesitaremos pedirle al gestor de regiones dicho módulo indicándole el nombre con el que lo registramos en la inicialización:

<ContentControl Regions:RegionManager.RegionName="DefaultRegion"/>

Cuando hayamos definido el layout general de la pantalla, tan solo deberemos rellenar cada “hueco” con el módulo correspondiente, para tener una aplicación compuesta.

Fuentes originales:

 

 

 

Anuncios
Esta entrada fue publicada en Silverlight y etiquetada , . Guarda el enlace permanente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s