Como obter um ItemsSource para atualizar sua ligação?
Eu tenho uma visão que mostra uma caixa de listagem vinculada aGetAll ():
<DockPanel>
<ListBox ItemsSource="{Binding GetAll}"
ItemTemplate="{StaticResource allCustomersDataTemplate}"
Style="{StaticResource allCustomersListBox}">
</ListBox>
</DockPanel>
GetAll () é uma propriedade ObservableCollection no meu ViewModel:
public ObservableCollection<Customer> GetAll
{
get
{
return Customer.GetAll();
}
}
que por sua vez chama um método de modelo GetAll (), que lê um arquivo XML para preencher o 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;
}
Isso tudo funciona bem, EXCETO quando o usuário passa para outra visualização, edita o arquivo XML e volta a esta vista em que os dados antigos ainda estão aparecendo.
Como posso dizer a essa exibição para "atualizar suas ligações" para mostrar os dados reai
Parece que estou lidando com o WPF aqui com muita metáfora HTML / HTTP, sinto que há uma maneira mais natural de fazer com que o ObservableCollection se atualize, daí o nome, mas é a única maneira de obter o usuário para poder editar dados em um aplicativo WPF no momento. Portanto, ajuda em qualquer nível é apreciada aqu