Mvvm model ViewModel

Se puede llamar modelo MVVM o no? Porque View interactúa con DataModel a través de ViewModelData. ¿View debe interactuar solo con ViewModelData? Leí en alguna parte que el modelo de MVVM correcto debería implementar INotify en ViewModel, no en Model. ¿Es correcto?

namespace WpfApplication135 { ///  /// Interaction logic for MainWindow.xaml ///  public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); DataContext = new ViewModelData(); } } public class ViewModelData { public DataModel DM { get; set; } public ViewModelData() { DM = new DataModel(); } } public class DataModel : INotifyPropertyChanged { public int label; public int Label { get { return label; } set { label = value; RaisePropertyChanged("Label"); } } public DataModel() { Action Update = new Action(Run); IAsyncResult result = Update.BeginInvoke(null, null); } public event PropertyChangedEventHandler PropertyChanged; private void RaisePropertyChanged(string info) { if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs(info)); } public void Run() { int i=0; while(true) { System.Threading.Thread.Sleep(2000); Label = ++i; } } } } 

xaml

    

El pensamiento inicial para MVVM fue de hecho que la Vista no debería conocer (no depender de) el Modelo.

En la práctica, esto significaba volver a implementar todas las propiedades del modelo en ViewModel (ver el recuadro amarillo claro en la imagen siguiente), mucho trabajo. Y más doloroso cuando su Modelo puede implementar fácilmente INPC, por ejemplo, cuando se genera a partir de un esquema de la Base de datos. Entity Framework en el modo de primera base de datos le permite inyectar el código INPC a través de las plantillas T4.

Rápidamente se llegó al consenso de que es correcto reenviar una propiedad ViewModel.Model y vincularla a ella, al igual que su propiedad DM . Ver el cuadro azul claro en la imagen.

El problema se visualiza muy bien en esta imagen, tenga en cuenta la gran cantidad de flechas en la esquina superior derecha. Representan las diversas soluciones y puede usar cualquier combinación de ellas.

Capas de aplicación de WPF LOB - MVVM

Un punto de MVVM es que su vista no debe conocer su modelo de datos y viceversa. Es por eso que hay un ViewModel. En este momento, su ViewModel es un código desperdiciado. No hace nada.

Es posible que desee leer un poco más sobre MVVM, porque explicarlo aquí es demasiado amplio para el formato de preguntas y respuestas.