tutorial patron modelo instancelocator espaƱol ejemplo comandos c# .net mvvm

c# - modelo - patron mvvm xamarin



Uso de MVVM en aplicaciones grandes: compartir modelos de vista, modelos, estados, etc. (3)

técnicas y patrones cuando se trata de pasar datos entre las páginas de la aplicación

Si la transferencia de datos está impulsada por eventos (es decir, desea notificar cuándo recibe datos enviados desde un servidor), use eventos débiles. El EventAggregator de Prism es una de las muchas implementaciones.

Si el paso de datos es constante, permita que DataContext fluya por el árbol XAML y simplemente utilice el enlace.
Eso significa que si tiene un UserControl "maestro" que usa otro, UserControls más específico, no establece su DataContext, heredarán el maestro y todo estará bien.
Si desea separar la funcionalidad, use la composición en el modelo de vista del maestro.

donde iniciar viewmodels

Los puristas te dirán que los instales directamente en XAML. Casi nunca hago eso.
En primer lugar, ViewModels generalmente necesita servicios, y se pasan como parámetros de constructor, o se inyectan a través de MEF en el constructor ... etc. Por lo tanto, no puede tener un constructor sin parámetros, o es más difícil.

Ahora, podemos hacer cosas difíciles, pero ¿cuál es la ganancia? Está perfectamente bien permitir que el código detrás de la vista recupere ViewModel, o que se lo inyecte en su constructor.

dónde almacenar los datos de aplicación comunes (compartidos entre múltiples modelos de vista)

Si los datos son globales: use clases / propiedades estáticas,
en XAML puedes acceder a ellos a través de {x:Static my:StaticClass.StaticProperty} , si quieres llegar a una clase / enum anidada, usa + lugar de .

Si los datos solo se comparten entre varios ViewModels pero no todos, use inheritance / composition en viewmodels, junto con un patrón de controlador.

Otros consejos recopilados de la experiencia:

  • Solo enlace estrictamente lo que necesita: no se una a un objeto completo cuando solo necesite una cadena allí.

  • Si MultiBinding lo mismo una y otra vez, no dude en crear marcas personalizadas heredando Binding / MultiBinding . Es DRY 101, pero la mayoría de la gente simplemente copia / pega Enlaces por alguna razón.

Ejemplo:

public class VisibilityBinding : MultiBinding, IMultiValueConverter { public VisibilityBinding() { var isSomething = new Binding("IsSomething"); isSomething.ElementName = myUsrCtrl; this.Bindings.Add(isSomething); //Add more bindings this.Converter = this; } //Implement IMultiValueConverter to compute a System.Visibility from the bound values. }

Y en XAML:

<TextBox Visibility={customMrkup:VisibilityBinding} />

  • Evite a toda costa cualquier duplicación de datos, hasta el DAL. Se vuelve complejo muy rápido sincronizar campos que podrían deducirse a través de un I (Multi) ValueConverter.
    Ejemplo: tienes un archivo de audio Tiene una hora de inicio, una hora de finalización y una duración. Deshágase de cualquiera de estas 3 propiedades, la tercera puede deducirse.

Si pienso en más consejos, volveré y los agregaré.

¡Espero que esto ayude!

Me preguntaba si alguno de ustedes sabe algún buen tutorial que explique MVVM para grandes aplicaciones. Todos los tutoriales sobre MVVM que encontré son solo explicaciones básicas (cómo implementar el modelo, el modelo de vista y la vista), pero tengo curiosidad sobre las técnicas y patrones cuando se trata de pasar datos entre páginas de aplicaciones, dónde iniciar viewmodels, dónde almacenar aplicaciones comunes datos (compartidos entre múltiples viewmodels) etc.

Prefiero las soluciones puras de c # / XAML sin marcos de MVVM (MVVMLight, etc.).


En primer lugar, puede crear un modelo BaseView con algunas propiedades que son comunes en todos los modelos de vista. Usa la Inyección de Dependencia como Castle / Prism4 para enviar datos de uno a otro modelo de vista que utilizamos. Prisms EventAggregator Espero que esto ayude en tu búsqueda. Pero como dijo Jon, depende completamente de usted lo que prefiera usar. Pero estos son buenos puntos de partida.


Es posible que desee echar un vistazo a este libro: Creación de aplicaciones empresariales con Windows Presentation Foundation y Model View View Model Model (por ejemplo, en Amazon.com ).

Se acerca a MVVM en un contexto más general, no solo un fragmento de código de 5 minutos, e incluso da sugerencias sobre cómo se puede organizar una solución comercial.

A menudo lo usamos como referencia en el trabajo. Personalmente hablando, desearía que hubiera profundizado un poco más en los detalles. Pero aún así, es una buena lectura ingresar a MVVM desde la perspectiva de una aplicación de línea de negocio.

Texto descriptivo:

Cree aplicaciones de línea de negocio ricas, flexibles y fáciles de mantener con el patrón de diseño de MVVM

Simplifique y mejore el desarrollo de aplicaciones comerciales aplicando el patrón MVVM a Windows Presentation Foundation (WPF) y Microsoft® Silverlight® 4. Con esta guía práctica, usará MVVM con enlace de datos, comandos y comportamientos para crear interfaces de usuario sin apretar acoplado a la lógica de negocios. MVVM es ideal para desarrolladores de .NET que trabajan con WPF y Silverlight, independientemente de si tiene experiencia en la creación de aplicaciones empresariales.

Descubra cómo:

  • Sumérjase en MVVM y descubra cómo se diferencia de otros patrones de diseño de interfaz de usuario. Cree una aplicación sencilla de gestión de relaciones con el cliente que pueda adaptar a sus propios proyectos.
  • Implemente MVVM para mantener la separación entre la sintaxis declarativa de UI y el código de lógica de presentación
  • Cree un modelo de dominio para definir el contexto comercial de su aplicación
  • Escribir código dinámico para la capa de acceso a datos con Microsoft Entity Framework y NHibernate
  • Aplicar escenarios complejos de validación de datos con Windows Workflow Foundation 4
  • Implemente MVVM usando frameworks y toolkits como Microsoft Prism