title: WPF MVVM DataTemplates - View Not updating
body: <p>I'm working on a digital signage WPF application and the basic structure is setup as follows:</p>
  
  <p>I have a single view with a grid in it bound to a playlist object.  The playlist contains panes, the panes contain playlist items, and the playlist items each contain a content item.  I use DataTemplates to build the view for each piece, e.g.</p>
  
  <pre><code>    &lt;!-- This template represents a single content pane, no real display here, just empty space with a height and width --&gt;
      &lt;DataTemplate DataType="{x:Type entities:ContentPane}"&gt;
          &lt;ContentControl 
              Content="{Binding CurrentPlaylistItem, Mode=OneWay}" 
              Height="{Binding Height, Mode=OneTime}" 
              Width="{Binding Width, Mode=OneTime}" 
              HorizontalAlignment="Left"
              VerticalAlignment="Top"                
              /&gt;
      &lt;/DataTemplate&gt;
  
      &lt;!-- This is a playlist item which is contained within a ContentPane.
           This also has no real display, just a placeholder for the content item, and will likely contain some transition information--&gt;
      &lt;DataTemplate DataType="{x:Type entities:PlaylistItem}"&gt;
          &lt;inf:TransitionableContentControl Content="{Binding ContentItem}"&gt;&lt;/inf:TransitionableContentControl&gt;
      &lt;/DataTemplate&gt;
  
  
      &lt;!-- image item template 
           the path can be any valid uri e.g. http://... or file://... --&gt;
      &lt;DataTemplate DataType="{x:Type contentTypes:ImageContentType}"&gt;
          &lt;Grid Background="Transparent" x:Name="ImageType"&gt;
              &lt;Image Source="{Binding Bitmap, Mode=OneTime}"&gt;&lt;/Image&gt;
              &lt;inf:BusinessAd
                          ContainerHeight="{Binding ImageHeight, Mode=OneTime}"
                          ContainerWidth="{Binding ImageWidth, Mode=OneTime}"                            
                          Visibility="{Binding AdText, Converter={StaticResource _VisibilityConverter}, Mode=OneWay}"
                          Text="{Binding AdText.Text, Mode=OneTime}"
                          AdFontSize="{Binding AdText.TextStyle.FontSize}"
                          AdFontFamily="{Binding AdText.TextStyle.FontFamily}"&gt;
                  &lt;ContentControl 
                      Content="{Binding AdText, Mode=OneTime}"                         
                      ContentTemplate="{StaticResource BusinessAdTextTemplate}"&gt;
                  &lt;/ContentControl&gt;
              &lt;/inf:BusinessAd&gt;
          &lt;/Grid&gt;
      &lt;/DataTemplate&gt;
  </code></pre>
  
  <p>As the datacontext changes, the content in each pane transitions from one item to the next.  I'm running into a problem where the user is placing the same item in a pane twice in a row, be it a video, image, etc.  What happens is the change goes undetected and the UI does not update.  In the case of a video, it freezes on the last frame of the first video and the whole application hangs.</p>
  
  <p>I have tried doing an OnPropertyChanged("ContentItem") within the PlaylistItem class, tried setting Shared="False" on my data templates, I tried changing properties on the ContentItem object and raising PropertyChanged events, nothing seems to work.  I turned on tracing on the databinding to see what was happening and it all appears to be working correctly.  When I change properties on the ContentItem it shows a new hash for the new item, but no change on the UI.</p>
  
  <p>Within the TransitionableContentControl in the PlaylistItem, the OnContentChanged override is never hit when going from one content item to the same one.  If I swap that control out with a regular ContentControl, no change.</p>