# 在不釋放SelectedItem的情況下替換ListView的ItemsSource

A simple approach (view model code; ListView's SelectedItem & ItemsSource are bound to identically-bound properties on the vm):

var selectedItem = SelectedItem;
ItemsSource = service.GetData();
SelectedItem = Accounts.SingleOrDefault(x => x.Equals(selectedItem));


Another approach is writing an adapter that loads an ObservableCollection<> with proxy objects pointing to the data returned from the initial service layer call. Any time updated data is retrieved from the service layer, the proxy objects are updated to point to the newly-retrieved objects. This way, the ListView's ItemsSource does not need to be reset to update the ListView (it stays bound to the same ObservableCollection<>) which means that SelectedItem won't be reset. A downside to this approach is the amount of code involved.