title: ItemContainerStyle for Canvas-based ItemsControl
body: <p>I have the following ItemsControl, for which I'm using a Canvas as the panel:</p>
  
  <pre><code>&lt;ItemsControl ItemsSource="{Binding Widgets}"&gt;
      &lt;ItemsControl.Resources&gt;
          &lt;DataTemplate DataType="{x:Type widgetLayoutSpike:ColouredWidget}"&gt;
              &lt;Grid Background="{Binding BgColour}"&gt;
                  &lt;TextBlock Text="{Binding Title}" /&gt;
              &lt;/Grid&gt;
          &lt;/DataTemplate&gt;
      &lt;/ItemsControl.Resources&gt;
  
      &lt;ItemsControl.ItemsPanel&gt;
          &lt;ItemsPanelTemplate&gt;
              &lt;Canvas /&gt;
          &lt;/ItemsPanelTemplate&gt;
      &lt;/ItemsControl.ItemsPanel&gt;
  
      &lt;ItemsControl.ItemContainerStyle&gt;
          &lt;Style TargetType="ContentPresenter"&gt;
              &lt;Setter Property="ContentTemplate"&gt;
                  &lt;Setter.Value&gt;
                      &lt;DataTemplate&gt;
                          &lt;Grid Background="Yellow"&gt;
                              &lt;!--  &lt;ContentPresenter /&gt;  --&gt;
                          &lt;/Grid&gt;
                      &lt;/DataTemplate&gt;
                  &lt;/Setter.Value&gt;
              &lt;/Setter&gt;
          &lt;/Style&gt;
      &lt;/ItemsControl.ItemContainerStyle&gt;
  &lt;/ItemsControl&gt;
  </code></pre>
  
  <p>My requirements are:</p>
  
  <ul>
  <li>ItemTemplates are set via typed DataTemplates (an example one is show above for ColouredWidget item types).  There could be several of these for different item types.</li>
  <li>I need to be able to specify an ItemContainer template, that wraps all of the different ItemTemplates.  The specific use case is that I want this ItemContainer to set a common border chrome for all items (with buttons etc).</li>
  </ul>
  
  <p>The Canvas creates a ContentPresenter for each bound item.  As you can see above, I had hoped to be able to specify a ContentTemplate for the ContentPresenter in the ItemContainerStyle, but this doesn't work as I assume it essentially creates a circular reference.  </p>
  
  <p>Thanks in advance!</p>