Comment obtenir un ItemsSource pour actualiser ses bind?

J'ai une vue qui montre une listbox qui est lié à GetAll():

<DockPanel>
    <ListBox ItemsSource="{Binding GetAll}"
             ItemTemplate="{StaticResource allCustomersDataTemplate}"
             Style="{StaticResource allCustomersListBox}">
    </ListBox>
</DockPanel>

GetAll() est une ObservableCollection propriété dans mon ViewModel:

public ObservableCollection<Customer> GetAll
{
    get
    {
        return Customer.GetAll();
    }
}

qui à son tour appelle une GetAll() la méthode de modèle de qui lit un fichier XML pour remplir l'ObservableCollection.:

public static ObservableCollection<Customer> GetAll()
{
    ObservableCollection<Customer> customers = new ObservableCollection<Customer>();

    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;
}

Tout cela fonctionne bien SAUF lorsque l'utilisateur passe à un autre point de vue, édite le fichier XML et revient à ce point de vue où les anciennes données est toujours à l'affiche.

Comment puis-je dire de ce point de vue à "actualiser ses liaisons" de sorte qu'il affiche les données réelles.

Il se sent comme je vais sur WPF ici avec trop de HTML/HTTP métaphore, je sens qu'il y a un moyen plus naturel pour obtenir ObservableCollection de mettre à jour lui-même, d'où son nom, mais c'est la seule façon que je peux obtenir à l'utilisateur d'être en mesure de modifier des données dans une application WPF pour le moment. Alors de l'aide à n'importe quel niveau est apprécié ici.

OriginalL'auteur Edward Tanguay | 2009-04-30