title: ObservableCollection<T> does not update ListBox
body: <p>I've set the <code>ItemsSource</code> of a <code>ListBox</code> to an <code>ObservableCollection&lt;Employee&gt;</code> collection, and my <code>Employee</code> class implements <code>INotifyPropertyChanged</code>.</p>
  
  <p>On the <code>Employee</code>, I've bound several properties, one of them a <code>Color</code> property, and I've ensured that it invokes the <code>PropertyChanged</code> event when it's changed. I've also checked with the debugger that the <code>PropertyChanged</code> invoke is called.</p>
  
  <p>However, when databound the <code>Background</code> of the <code>ListBoxItem</code> in the bound <code>ListBox</code> does <strong>never update</strong>, which is extremely fustrating.</p>
  
  <p>Setting the <code>ItemsSource</code> to null, and resetting it after works, but it's not how we're meant to utilize the Observer Pattern.</p>
  
  <p>The XAML used:</p>
  
  <pre><code>&lt;Style TargetType="{x:Type ListBoxItem}"&gt;
      &lt;Style.Resources&gt;
          &lt;SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}"
                           Color="{x:Static SystemColors.HighlightColor}" /&gt;
      &lt;/Style.Resources&gt;
      &lt;Setter Property="Foreground" Value="White" /&gt;
      &lt;Setter Property="Background"
              Value="{Binding Path=Color, Converter={StaticResource ColorConverter}}" /&gt;
      &lt;Setter Property="Content" Value="{Binding Path=Name}" /&gt;
      &lt;Setter Property="Height" Value="25" /&gt;
      &lt;Setter Property="Margin" Value="0,1,0,1" /&gt;
      &lt;EventSetter Event="MouseDoubleClick" Handler="HelperList_MouseDoubleClick" /&gt;
  &lt;/Style&gt;
  
  &lt;ListBox x:Name="helperList" Grid.Column="0" Grid.Row="1" 
           Margin="5,2,0,5" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"
           ScrollViewer.VerticalScrollBarVisibility="Visible"
           SelectionChanged="HelperList_SelectionChanged"&gt;
  &lt;/ListBox&gt;
  </code></pre>
  
  <p>More code in response to first reply:</p>
  
  <pre><code>public class Employee : Person
  {
      private EmployeeColor color = new EmployeeColor();
      public EmployeeColor Color
      {
          get { return this.color; }
          set
          {
              if(!this.color.Equals(value))
                  OnPropertyChanged("Color");
  
              this.color = value;
          }
      }
  }
  
  var employees = new ObservableCollection&lt;Employee&gt;();
  //... fill out data here    
  helperList.ItemsSource = employees;
  </code></pre>