title: ObservableCollection<T> not updating UI
body: <p>I'm having an issue with an ObservableCollection getting new items but not reflecting those changes in a ListView.  I have enough quirks in the way I'm implementing this that I'm having a hard time determining what the problem is.</p>
  
  <p>My ObservableCollection is implemented thusly:</p>
  
  <pre><code>public class MessageList : ObservableCollection&lt;LobbyMessage&gt;
  {
      public MessageList(): base()
      {
          Add(new LobbyMessage() { Name = "System", Message = "Welcome!" });
      }
  }
  </code></pre>
  
  <p>I store the collection in a static property (so that its easily accessible from multiple user controls):</p>
  
  <pre><code>static public MessageList LobbyMessages { get; set; }
  </code></pre>
  
  <p>In the OnLoad event of my main NavigationWindow I have the following line:</p>
  
  <pre><code>ChatHelper.LobbyMessages = new MessageList();
  </code></pre>
  
  <p>My XAML in the UserControl where the ListView is located reads as:</p>
  
  <pre><code>    &lt;ListBox IsSynchronizedWithCurrentItem="True" 
           ItemsSource="{Binding Mode=OneWay}" 
           x:Name="ListBoxChatMessages" 
           d:UseSampleData="True" 
           ItemTemplate="{DynamicResource MessageListTemplate}" 
           IsEnabled="True"&gt;
        &lt;ListBox.DataContext&gt;
          &lt;Magrathea_Words_Tools:MessageList/&gt;
         &lt;/ListBox.DataContext&gt;
      &lt;/ListBox&gt;
  </code></pre>
  
  <p>The initial message that I added in the constructor appears in the UI just fine.</p>
  
  <p>Now, the way I add new items to the collection is from a CallBack coming from a WCF service.  I had this code working in a WinForms application and it was neccessary to marshall the callback to the UI thread so I left that code in place. Here is an abbreviated version of the method:</p>
  
  <pre><code>Helper.Context = SynchronizationContext.Current;
  
  #region IServiceMessageCallback Members
  
  /// &lt;summary&gt;
  /// Callback handler for when the service has a message for 
  /// this client
  /// &lt;/summary&gt;
  /// &lt;param name="serviceMessage"&gt;&lt;/param&gt;
  public void OnReceivedServiceMessage(ServiceMessage serviceMessage)
  {
      // This is being called from the WCF service on it's own thread so
      //  we have to marshall the call back to this thread.
      SendOrPostCallback callback = delegate
      {
          switch (serviceMessage.MessageType)
          {
              case MessageType.ChatMessage:
                  ChatHelper.LobbyMessages.Add(
                          new LobbyMessage()
                          {
                              Name = serviceMessage.OriginatingPlayer.Name,
                              Message = serviceMessage.Message
                          });
                  break;
  
              default:
                  break;
          }
      };
  
      Helper.Context.Post(callback, null);
  }
  </code></pre>
  
  <p>While debugging I can see the collection getting updated with messages from the service but the UI is not reflecting those additions.</p>
  
  <p>Any ideas about what I'm missing to get the ListView to reflect those new items in the collection?</p>