2010-10-03 17 views
10

Estoy tratando de aprender MVVM Light y estoy buscando un buen ejemplo básico que muestre un modelo y cómo cargar diferentes vistas.Buscando el ejemplo simple de MVVM Light

La plantilla que veo después de descargar MVVM Light no tiene modelos y solo una vista. (http://www.galasoft.ch/mvvm/creating/)

Otras cosas que he encontrado son más complejas y un poco confusas cuando todo lo que quiero ver son los conceptos básicos.

Gracias.

Respuesta

8

he encontrado útil este ejemplo:

http://apuntanotas.codeplex.com/

+1

El "modelo" en este e xample implementa INotify. Tiendo a pensar en el Modelo como el uso de POCO (Objeto CLR Plain Old) y con el ModelView que implementa el INotify para permitir el enlace de datos. –

1

Yo personalmente he encontrado estos a ser bastante útil, aunque también utilizan MEF y Servicios RIA, que pueden complicar las cosas:

A Sample Silverlight 4 Application Using MEF, MVVM, and WCF RIA Services

Architecting Silverlight 4 with RIA Services MEF and MVVM - Part 1

En abril, el autor de la Luz MVVM toolkit dijo que eventualmente crearía una aplicación de referencia tanto en Silverlight como en WPF. (Source)

Usted puede encontrar estas otras preguntas útiles:

mvvm light toolkit samples

wpf/silverlight mvvm sample app request

mvvm tutorial from start to finish

1

he encontrado estos dos a ser muy útil:

http://www.codeproject.com/KB/WPF/blendable_locator.aspx http://rickrat.wordpress.com/2011/01/24/using-mef-to-link-view-model-locator-and-load-assembly-uis-dynamically

La first es simplemente una simple versión de la clase viewLooder de MVVM Light que le otorga las capacidades de MEF.

[ExportViewModel("Demo1", false)] 
class Demo1ViewModel : ViewModel 
{ 
} 

Y el second uno, utiliza el mismo enfoque con una clase MefHelper adicional que permite ejecutar tiempo de carga de los componentes del MEF.

public void Compose() 
{ 
AggregateCatalog Catalog = new AggregateCatalog(); 
// Add This assembly's catalog parts 
System.Reflection.Assembly ass = System.Reflection.Assembly.GetEntryAssembly(); 
Catalog.Catalogs.Add(new AssemblyCatalog(ass)); 

// Directory of catalog parts 
if (System.IO.Directory.Exists(ExtensionsPath)) 
{ 
    Catalog.Catalogs.Add(new DirectoryCatalog(ExtensionsPath)); 
    string[] folders = System.IO.Directory.GetDirectories(ExtensionsPath); 

    foreach (string folder in folders) 
    { 
     Catalog.Catalogs.Add(new DirectoryCatalog(folder)); 
    } 

} 

_Container = new CompositionContainer(Catalog); 
}