Как получить (содать) коллекцию которая содержит «вычисляемое свойство» в классе ViewModel из базовой коллекции в Model?
Прошу помощи с MVVM, а именно с выводом коллекции которая содержит «вычисляемое свойство» в классе ViewModel (наследуется от класса из Model), которого нет в классе Model. На входе уже есть заполненная коллекция. Пересмотрел боле 50 примеров по MVVM, все что видел, так это используют класс из мoдели. В этом случае все просто. А в реальных системах может быть несколько View и в каждой могут быть похожие данные но с разными вычисляемыми свойствами. Грубо говоря мне нужен Downcasting коллекции или еще его называют контрвариантностью и нужно сохранить привязку так чтобы данные обновлялись когда изменяется базовая коллекция, но при этом не заменялась полностью.
К примеру в Model есть класс Person со свойствами Name, Surname и есть колекция ObservableCollection PeopleModel.
Во ViewModel есть класс PersonWithFullName наследуемый от Person и содержащий вычисляемое свойство FullName, и соответственно есть коллекция ObservableCollection People. И тут нестыковка, исходные данные в эту коллекцию должы быть взяты из коллекции с модели ObservableCollection PeopleModel.
Как такую штуку делают в реальных системах? Неужели полностью вручную перезаполняют коллекцию с базового на наследуемый и делают это каждый раз кода изменяются данные в базовой? Может у кого есть пример или кто натолкнет в какую сторону копать?
Быть может Вы передадите в ItemsControl коллекцию "ObservableCollection PeopleModel", после чего в реализацию ItemTemplate добавите конвертек, который скомпанует нужные свойства в единое и выведет в форме указанной этим же ItemTemplate
Такой способ работает, но мне кажется что это немного обходной путь.
Я могу создать наследуемую коллекцию путем перебора все элементов базовой коллекции и создание каждого наследуемого элемента. Добавив отслеживание изменения базовой коллекции и внесение изменений в наследуемою. Но когда я буду делать upcast к коллекции с базовым класом, я получу как бы копию коллекции, а не ссылку на первоначальную с которой была выполнена конвертация.