У меня есть подкласс List<Location>
, называемый LocationList
. Для нас это удобный способ добавить другие свойства (например, IsExpanded
и такие, которые мы можем использовать в пользовательском интерфейсе. Достаточно хорошо. Но теперь мы хотим, чтобы каждое местоположение знало о своем родителе. Таким образом, мы должны быть уведомляется, когда что-то добавляется в LocationList, но вы не можете переопределить Add
и Remove
. Хотя мы можем использовать ObservableCollection, это скорее конструкция View / ViewModel. Это чистые данные модели.
Конечно, мы могли бы вручную установить родительский элемент при добавлении его в коллекцию, но я ненавижу неавтоматизированную логику, подобную этой, поскольку нет ничего, чтобы правильно установить его набор. Позвольте коллекции (ну, List) автоматически сказать: «Эй ... вы добавлены, поэтому я назначу вашему родителю класс, который владеет мной». Вот что я хочу.
Моя мысль состоит в том, чтобы вместо подкласса List<Location>
вместо этого просто создать прямой класс, который использует List<Location>
внутри, и тогда я могу просто выставить свои собственные методы Add / Remove и обработать корректировки для 'Parent' там. , Однако это нарушает возможность перечисления по внутренней коллекции, поскольку она внутри.
Тем не менее, есть ли способ прослушать изменения List<Location>
или, по крайней мере, делегировать его интерфейс IEnumerable
от обернутого объекта его оболочке?