title: MVVM and DI - How to handle Model objects?
body: <p>I'm using Caliburn and C#, but I feel like this is a generic MVVM/DI question.</p>
  
  <p>Let's say I have a view model, NoteViewModel, that is passed a model object called Note.</p>
  
  <p>Here is some code:</p>
  
  <pre><code>class NoteViewModel : PropertyChangedBase
  {
    private readonly Note _note;
  
    public NoteViewModel(Note note)
    {
      _note = note;
    }
  
    public string Title
    { 
      get { return _note.Title; } 
      set { _note.Title = value; NotifyOfPropertyChange(() =&gt; Title); }
    }
  }
  </code></pre>
  
  <p>Right now this object is created by calling new() and passing a model object.</p>
  
  <p>Well, that works great, but now I need to add a method that requires an imported class from my DI container.</p>
  
  <p>So do I merely call ServiceLocator.Current.GetInstance() to get it?  Or should I design this view model to be created via the DI container and somehow setup a way to pass a Note object?</p>
  
  <p>What is the proper way to design this view model?  Basically a "PerInstance" view model that requires a model object for it's use.  Does Caliburn have a built-in way to do this?</p>