Скажем, у меня есть основной класс базы данных, TvShowDatabase
, который содержит список Shows
. Каждый Show
имеет список Episodes
, каждый из которых имеет Length
. Объекты TvShowDatabase
, Show
и Episode
все оснащение INotifyPropertyChanged
.Вычисление агрегатов связующих объектов в WPF?
Я хотел бы, чтобы вычислить и показать TotalViewingPotential
, свойство TvShowDatabase
, который суммирует Length
каждого Episode
каждого Show
.
Кроме того, предположим, что пользователь смотрит на эту структуру в древовидном стиле и может редактировать Length
любого Show
. Когда они это делают, TotalViewingPotential
должен соответственно обновиться, и результаты будут видны на экране.
Мой вопрос: в WPF (и, в частности, с использованием Prism для MVVM), как лучше всего подключить сантехнику для этих уведомлений об изменениях?
Я посчитал, что перехватывает добавления к каждому списку (с использованием ObservableCollection
) и дает любые новые позиции Parent
. Это, однако, становится беспорядочным, и подход сверху вниз является предпочтительным.
Я видел гипер-наблюдаемые коллекции (http://www.codeproject.com/Tips/694370/How-to-Listen-to-Property-Chang), но я беспокоюсь о утечке памяти на основе подписки на события, используя этот метод, и по-прежнему требуется хорошая ручная сантехника, чтобы поднять события OnPropertyChanged(TotalViewingCollection)
там, где это необходимо.
Есть ли шаблон для этого?
Возможно, вы захотите изучить Reactive Extensions для .NET, к сожалению, я только начал смотреть на него, поэтому я не чувствую себя комфортно, давая вам советы об этом –