title: What are the pros and cons of the various view creation techniques in WPF?
body: <p>I've been using MVVM for the past two years and it has certainly evolved for the better since that time. As I read though the hundreds of MVVM articles and stackoverflow questions, I've noticed that there appears to be more and more articles that describe the view/viewmodel relationship and creation as ViewModel first or View first. These articles usually use IoC or DI. </p>
  
  <p>My favorite technique has been the use of datatemplates to create the views, and structuring the application off the the viewmodels rather than the views. I rarely see articles anymore that use this pattern.</p>
  
  <pre><code>&lt;DataTemplate DataType="{x:Type ViewModels:DummyViewModel}"&gt;
    &lt;Views:DummyUserControl DataContext="{Binding}"/&gt;
  &lt;/DataTemplate&gt;
  </code></pre>
  
  <p>Testability and decoupling seem to be the main focus of these 'non-datatemplate' V-VM creation/relationship designs and articles, and often they have to do with MEF or PRISM. Ultimately I would like to know the following:</p>
  
  <ol>
  <li>Is the DataTemplate view creation technique still used or recommended?</li>
  <li>What are the pros/cons of the view first design?</li>
  <li>What are the pros/cons of the viewmodel first design (with the view injected)</li>
  </ol>
  
  <p>Any good links to articles covering these topics is appreciated, provided they are not MEF/PRISM related.</p>