Как привязать данные к ссылкам, а не к реальным объектам?
Поэтому я возвращаюсь к настольным приложениям после десятилетнего отсутствия в непрограммных ИТ-ролях и учусь C# и WPF. (Не судите меня! Я вижу _reported_ нисходящую тенденцию :-)
Итак, вот моя проблема: у меня есть иерархический родительский объект C#, который я хотел бы использовать в качестве своего избыточного источника данных. Допустим, у него есть ObservableCollection объектов Person. И каждый объект Person в коллекции имеет ObservableCollection тегов (простые объекты, которые имеют имя, описание, цвет). Это делается для того, чтобы пользователь приложения мог "помечать" человека такими вещами, как теги "менеджер" или "сотрудник" (и другие пользовательские теги, которые они создают).
Когда создается отдельный объект тега, я назначаю новый Guid (преобразованный в строку) свойству ID тега. Вместо того чтобы хранить фактический объект тега в коллекции тегов каждого человека (чтобы избежать ненужного раздувания данных), я собирался сохранить значение свойства ID (строку guid) в человеке.Коллекция тегов.
Проблема в том, что теперь, когда дело доходит до привязки данных, есть ли простой способ отобразить человека и его теги (и разрешить редактирование тегов)?
Одно из возможных решений, о котором я подумал, - это как только родительский объект будет воссоздан с диска (десериализован), создать временную наблюдаемую коллекцию тегов (фактические объекты тегов вместо строк guid) для каждого человека и привязать к нему. Другие мысли оценил.
Кстати, я действительно удивлен, что WPF зашел так далеко. Когда вы берете пересечение объектов, которые на самом деле совместимы с реальным использованием, это крошечный, крошечный набор. Например, объекты, которые можно использовать для привязки данных и сериализации без тяжелого написания кода и обходных путей.
Что я уже пробовал:
Не беспокойтесь о раздувании данных и просто идите на это.