Я пишу приложение, которое считывает данные из локальной базы данных и отображает их в списке (я работаю в WPF).
У меня есть объект DVD, где его свойствами являются столбцы базы данных. Этот объект DVD также реализует INotifyPropertyChanged. «MyDVDs» — это таблица, которая ссылается на db. После создания этих объектов я создаю класс, который наследуется от ObservableCollection и берет данные из «MyDVD» в конструкторе. Однако мне нужно не только добавлять, удалять и обновлять данные из списка, но мне также нужно их сортировать и фильтровать. Вот код для ObservableCollection:
class ObservableDVD : ObservableCollection<DVD>
{
private ICollectionView collection;
public ObservableDVD(MyDVDs e)
{
foreach (DVD d in e.DVDs)
{
this.Add(d);
}
Collection = CollectionViewSource.GetDefaultView(this);
}
public ICollectionView Collection
{
get { return collection; }
private set { collection = value; }
}
}
Я хотел знать, это хороший способ ?? Или я могу лучше?
В MainWindow проекта, когда срабатывает событие Load_Window, я назначаю свойство Collection для listbox.ItemSource (в отделенном коде MainWindow я объявляю приватное поле, которое, очевидно, относится к объекту ObservableDVD). У меня есть несколько кнопок, которые позволяют мне выполнять операции, о которых я говорил вам ранее. В заголовке событий кнопок я напрямую обновляю и изменяю объект ObservableDVD, а не его свойство Collection. Однако свойство Collection также отражает эти изменения.
Почему происходит такое поведение? Это нормально для меня, но я не могу понять, почему это происходит. Это из-за уведомлений?