title: ItemsControl not updating after data change to an ObservableCollection<T> property
body: <p>I have the following test code…
  XAML:</p>
  
  <pre><code>&lt;Page
      x:Class="Test.MainPage"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      xmlns:local="using:Test"
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
      xmlns:data="using:Test"
      mc:Ignorable="d"&gt;
  
      &lt;Grid&gt;
          &lt;Grid.RowDefinitions&gt;
              &lt;RowDefinition Height="Auto"/&gt;
              &lt;RowDefinition Height="*"/&gt;
          &lt;/Grid.RowDefinitions&gt;
  
          &lt;Button Name="StartButton" Content="Start" Click="StartButton_Click" Height="30" Width="200"/&gt;
  
          &lt;ItemsControl Grid.Row="1" Background="Gray" ItemsSource="{x:Bind RowItems}"&gt;
          &lt;ItemsControl.ItemTemplate&gt;
  
                  &lt;DataTemplate x:DataType="data:MyData"&gt;
                      &lt;StackPanel Orientation="Horizontal"&gt;
                          &lt;TextBlock Text="{x:Bind FirstName}" Margin="10,0,5,0"/&gt;
                          &lt;TextBlock Text="{x:Bind Surname}"/&gt;
                      &lt;/StackPanel&gt;
                  &lt;/DataTemplate&gt;
              &lt;/ItemsControl.ItemTemplate&gt;
          &lt;/ItemsControl&gt;
      &lt;/Grid&gt;
  &lt;/Page&gt;
  </code></pre>
  
  <p>Code behind:</p>
  
  <pre><code>namespace Test
  {
      public class MyData
      {
          public string FirstName { get; set; }
          public string Surname { get; set; }
      }
  
      public class LoadData
      {
          public static void Get_RowItems(ObservableCollection&lt;MyData&gt; Items)
          {
              Items.Add(new MyData() { FirstName = "John", Surname = "Doe" });
          }
      }
  
      public sealed partial class MainPage : Page
      {
          private ObservableCollection&lt;MyData&gt; RowItems;
  
          public MainPage()
          {
              this.InitializeComponent();
              RowItems = new ObservableCollection&lt;MyData&gt;();
              LoadData.Get_RowItems(RowItems);
          }
  
          private void StartButton_Click(object sender, RoutedEventArgs e)
          {
              RowItems[0].FirstName = "Bill";
          }
      }
  }
  </code></pre>
  
  <p>On running it, the ItemsControl displays the first line of data (John Doe) fine.</p>
  
  <p>When the Start button is clicked, the underlying data changes to Bill Doe (as expected)</p>
  
  <p>But, the ItemsControl stubbornly continues to display: John Doe</p>
  
  <p>I’ve read so many articles relating to this kind of issue and none of the solutions seem to work (if I’ve implemented them correctly) so now I can’t see the wood for the trees.</p>
  
  <p>Any help would be appreciated.</p>