title: Getter and setter in ViewModel for primitive properties in an INotifyPropertyChanged Model
body: <p>I'm currently working on a project which leverages the MVVM pattern, and have came across this scenario.</p>
  
  <p>Supposed a class Model : INotifyPropertyChanged contains some properties, for example</p>
  
  <pre><code>public class Model : INotifyPropertyChanged
  {
      private string rabbit;
      public string Rabbit
      {
          get { return rabbit; }
          setter { rabbit = value; OnPropertyChanged("Rabbit"); }
      }
  }
  </code></pre>
  
  <p>Now, I wish to write a ViewModel which wraps around Model, exposing the properties of Model together with additional properties (commands, etc).</p>
  
  <p>The problem comes when writing the getters and setters for the properties already existing in Model. I have commented out the specific portion of the code.</p>
  
  <pre><code>public class ViewModel : INotifyPropertyChanged
  {
      private Model modelObject;
      public string Rabbit
      {
          get { return modelObject.rabbit; }
          setter 
          { 
              modelObject.rabbit = value; 
              OnPropertyChanged("Rabbit"); // Should OnPropertyChanged be called here?
          }
      }
  
      public ViewModel(Model modelObject)
      {
           this.modelObject = modelObject;
      }
  }
  </code></pre>
  
  <p>I am not sure if I should call OnPropertyChanged again in the ViewModel. Since the View binds to the ViewModel but should not be able to access the model, it seems only logical to do so.</p>
  
  <p>(P.S. the reason I made my model observable is the same model will be used elsewhere apart from the GUI in the same memory space, where there is also a need to be notified of changes to the model.)</p>