title: XAML without the .xaml.cs code behind files
body: <p>I'm using WPF with the Model-View-ViewModel pattern.  Thus, my code behind files (.xaml.cs) are all empty, except for the constructor with a call to InitializeComponent.  Thus, for every .xaml file I have a matching, useless, .xaml.cs file.</p>
  
  <p>I swear I read somewhere that if the code behind file is empty except for the constructor, there is a way to delete the file from the project altogether.  After searching the net, it seems that the appropriate way to do this is to use the 'x:Subclass' attribute:</p>
  
  <pre><code>&lt;UserControl
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
      mc:Ignorable="d"
      xmlns:toolkit="http://schemas.microsoft.com/wpf/2008/toolkit"
      x:Class="MyNamespace.MyClass"
      x:Subclass="UserControl"
      d:DesignWidth="700" d:DesignHeight="500"&gt;
  </code></pre>
  
  <p>This does the following in the generated .g.cs file:</p>
  
  <ol>
  <li>Removes the 'partial' class modifier on MyClass.</li>
  <li>Adds the class 'UserControl' in to its subclass list.</li>
  </ol>
  
  <p>Seems perfect.  Indeed, if you still have the .xaml.cs file in the build, it no longer compiles because of the missing partial--so I'm thinking this must be correct.  However, if I remove the superfluous file from the build and run, the control does not get initialized correctly (it is blank).  This is, I presume, because InitializeComponent() is not getting called.  I see InitializeComponent is not virtual, so it seems there would be no way for the base class to call it (short of using reflection).</p>
  
  <p>Am I missing something?</p>
  
  <p>Thanks!</p>
  
  <p>Eric</p>