I might be missing something simple, so bear with me.
I have a ViewModel that contains the following:
public ObservableCollection<Person> PersonCollection
{
get { return personCollection; }
set
{
if (personCollection != value)
{
personCollection = value;
RaisePropertyChanged("PersonCollection");
}
}
}
Then in another ViewModel I have:
public ObservableCollection<Person> PersonCollection
{
get
{
PersonViewModel vm = (App.Current.Resources["Locator"] as ViewModelLocator).PersonViewModel;
return vm.PersonCollection;
}
}
public PersonViewModel PersonViewModel
{
get
{
return ((App.Current.Resources["Locator"] as ViewModelLocator).PersonViewModel)
}
}
In my XAML if I bind to PersonCollection then updates don’t happen on my view, but if I bind to PersonViewModel.PersonCollection it does. so is this the “proper” way to do it or is there a way for the view to detect the notifications using the first approach?
Change your binding to
{Binding PersonViewModel.PersonCollection}Your wrapped
PersonCollectionproperty has no change notifications, so the view doesn’t know that the property has changed (it certainly has no way of knowing it originally came fromPersonViewModelin order to get change notifications from it)