я буду стараться упростить как можно так:Refresh и Оповещать о связанных коллекции изменений
Я следующий EF6 объект:
public class ParentObject
{
ICollection<ChildObject> Children {get; set ;}
}
У меня есть ViewModel где
ObservableCollection<ParentObject> ParentCollection { get; set; }
ParentObject SelectedParent { get; set; }
ChildObject SelectedChild { get; set; }
Также у меня есть два вида ListViews
<ListView Name="lvParents" Margin="5,5,0,5" Grid.Row="1" Grid.Column="0" ItemsSource="{Binding Path=ParentCollection}" SelectedItem="{Binding Path=SelectedParent}">
<ListView Name="lvChildren" Margin="5,5,0,5" Grid.Row="1" Grid.Column="0" ItemsSource="{Binding Path=SelectedParent.Children}" SelectedItem="{Binding Path=SelectedChild}">
Все объекты EF6 имеют реализованный INotifyPropertyChanged, Также в моей модели ViewModel реализована INotifyPropertyChanged.
Все работает хорошо, если я меняю выбранный элемент в lvParents. Дети в lvChildren меняются.
После того, как я уничтожаю детей, я не могу обновить детей: (элемент удаляется из базы данных, но не может обновить только lvChildren
Вот метод, который я пытался использовать:.
_dataContext.ChildrenObjects.Remove(SelectedChild);
_dataContext.SaveChanges();
SelectedParent.Children.Remove(SelectedChild);
//here the SelectedParent does not contain the value I removed but no way how to refresh the ItemsSource of lvChildren.
NotifyPropertyChanged("SelectedChild");
NotifyPropertyChanged("SelectedParent.Children");
NotifyPropertyChanged("ParentCollection");
Мои вопрос в том, каков правильный способ привязать зависящие (связанные) коллекции и обновить их после их изменения. Нужно ли мне перегружать ICollection EF6 и создать свой собственный ObservableCollection? Достаточно ли этого?
Спасибо за ответ. (ICollection) генерируется EF6 для связанных связанных объектов в отношениях. –
Я знаю. И свойства ICollection не являются «дружественными» WPF. – mm8