silverlight silverlight-3.0 mvvm ria wcf-ria-services

Combinando.NET RIA Services y MVVM en Silverlight 3.0



silverlight-3.0 wcf-ria-services (2)

El contexto de datos de servicios de RIA se diseñó para desempeñar el papel de un modelo de vista en el patrón de MVVM, ya que admiten de forma nativa el enlace de datos, pero no usan ese término en su documentación. Sin embargo, realmente depende. Es probable que necesite estado en su modelo de vista que el contexto de datos RIA proporciona, como comandos y otro estado relacionado con la vista. Creo que lo que quiere hacer es usar los contextos de datos de los servicios de RIA como parte del modelo de vista.

Al usar .NET RIA Services y MVVM en Silverlight 3.0, ¿hay alguna diferencia entre el tipo de metadatos de RIA Services y ViewModel del patrón MVVM? ¿Son lo mismo o deberían mantenerse separados?

El tipo de metadata es una clase interna sellada para la clase de entidad parcial. No parece haber una separación adecuada allí, pero el tipo de metadatos también se puede decorar con atributos para la Validación, lo que lo hace parecer un Modelo de Vista.

He buscado alrededor, pero no vi nada que describa esto en detalle.


De acuerdo con ChuckJ: en general, DomainContext forma parte de un modelo de vista. Por ejemplo, supongamos que tengo una página de búsqueda que permite buscar en un catálogo de productos. Así es como estructuraría las cosas:

En el servidor:

class Catalog : DomainService { IQueryable<Product> GetProducts(string keyword) { ... } }

El DomainContext generado:

class Catalog : DomainContext { EntityList<Product> Products { get; } void LoadProducts(string keyword); }

El modelo de vista que escribiría:

class SearchViewModel { Catalog _catalog = new Catalog(); public IEnumerable<Product> Results { get { return _catalog.Products; } } public void Search(string keyword) { _catalog.Products.Clear(); _catalog.LoadProducts(keyword); } }

Y finalmente, en mi xaml, establecía el DataContext de UserControl para que fuera una instancia de SearchViewModel y uniera un ItemsControl a la propiedad Results. Usaría el patrón de ViewModel de su elección para vincular un botón, haga clic en Buscar (que es efectivamente un comando que SearchViewModel expone). Personalmente me gusta algo que tengo trabajando con Silverlight.FX como en:

<Button Content="Search" fxui:Interaction.ClickAction="$model.Search(keywordTextBox.Text)" />

y como se muestra inicialmente aquí .

Como Chuck menciona, podría tener otro estado en mi modelo de vista, por ejemplo, elProducto Seleccionado que podría estar enlazado bidireccionalmente al Elemento Seleccionado de un ListBox en mi xaml, y luego enlazar el mismo Producto Seleccionado como el DataContext de un DataForm para mostrar detalles de un producto seleccionado

¡Espero que ayude! Estaré blogueando sobre esto un poco más en mi blog pronto.