title: How to get an ItemsSource to refresh its bind?
body: <p>I've got a view which shows a listbox that is bound to <strong>GetAll()</strong>:</p>
  
  <pre><code>&lt;DockPanel&gt;
      &lt;ListBox ItemsSource="{Binding GetAll}"
               ItemTemplate="{StaticResource allCustomersDataTemplate}"
               Style="{StaticResource allCustomersListBox}"&gt;
      &lt;/ListBox&gt;
  &lt;/DockPanel&gt;
  </code></pre>
  
  <p><strong>GetAll() is an ObservableCollection property</strong> in my ViewModel:</p>
  
  <pre><code>public ObservableCollection&lt;Customer&gt; GetAll
  {
      get
      {
          return Customer.GetAll();
      }
  }
  </code></pre>
  
  <p>which in turn <strong>calls a GetAll() model method</strong> which reads an XML file to fill the ObservableCollection.:</p>
  
  <pre><code>public static ObservableCollection&lt;Customer&gt; GetAll()
  {
      ObservableCollection&lt;Customer&gt; customers = new ObservableCollection&lt;Customer&gt;();
  
      XDocument xmlDoc = XDocument.Load(Customer.GetXmlFilePathAndFileName());
      var customerObjects = from customer in xmlDoc.Descendants("customer")
                            select new Customer
                            {
                                Id = (int)customer.Element("id"),
                                FirstName = customer.Element("firstName").Value,
                                LastName = customer.Element("lastName").Value,
                                Age = (int)customer.Element("age")
                            };
      foreach (var customerObject in customerObjects)
      {
          Customer customer = new Customer();
  
          customer.Id = customerObject.Id;
          customer.FirstName = customerObject.FirstName;
          customer.LastName = customerObject.LastName;
          customer.Age = customerObject.Age;
  
          customers.Add(customer);
      }
  
      return customers;
  }
  </code></pre>
  
  <p>This all works fine EXCEPT when the user goes to another view, <strong>edits the XML file</strong> and comes back to this view where <strong><em>the old data is still showing</em></strong>. </p>
  
  <p><strong>How can I tell this view to "refresh its bindings" so that it shows the actual data.</strong></p>
  
  <p>It feels like I am going about WPF here with too much of an HTML/HTTP metaphor, I sense there is a more natural way to get ObservableCollection to update itself, hence its name, but this is the only way I can get the user to be able to edit data in a WPF application at the moment. So help on any level is appreciated here.</p>