Mvvm model ViewModel

Pode ser chamado de modelo MVVM ou não? Porque o View interage com o DataModel através do ViewModelData. O View deve interagir apenas com o ViewModelData? Eu li em algum lugar que o modelo MVVM direito deve implementar o INotify no ViewModel não no modelo. Está certo?

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

    

O pensamento inicial do MVVM era de fato que o View não deveria saber (não depender) do Modelo.

Na prática, isso significava reimplementar todas as propriedades do Modelo no ViewModel (veja a checkbox amarelo claro na figura abaixo), muito trabalho. E mais doloroso quando o seu Modelo pode facilmente implementar o INPC, por exemplo, quando é gerado a partir de um esquema de Banco de Dados. O Entity Framework no primeiro modo de database permite que você injete o código INPC através dos modelos T4.

O consenso tornou-se rapidamente que é OK para encaminhar uma propriedade ViewModel.Model e vincular a isso, assim como sua propriedade DM . Veja a checkbox azul clara na foto.

O problema é visualizado muito bem nesta imagem, observe o grande número de setas no canto superior direito. Eles descrevem as várias soluções e você pode usar qualquer combinação delas.

Camadas de Apllicação de LOB do WPF - MVVM

Um ponto do MVVM é que sua visão não deve conhecer seu modelo de dados e vice-versa. É por isso que existe um ViewModel. No momento, seu ViewModel é um código perdido. Não faz nada.

Você pode querer ler um pouco mais sobre o MVVM, porque explicá-lo é muito amplo para o formato de Q & A aqui.