Хорошая архитектура данных - нетривиальная проблема, я могу просто высказать некоторые мои мысли, но не могу гарантировать, что они все являются хорошей идеей.
Во-первых, не рекомендую работать напрямую с XML-данными, это становится очень неудобным, если вы пытаетесь делать более сложные вещи.
Вы можете сериализовать свои данные в XML, но вы должны знать о его ограничениях и побочных эффектах, здесь есть вопросы, которые можно найти в SO, которые пытаются сравнить различные методы сериализации, вы можете захотеть найти те, так как другие форматы могут быть более подходящими. Например, очевидны два аспекта XML:
- Огромные накладные расходы на размер файла из-за тегов и текстовых данных
- В отличие от двоичной сериализации, данные более или менее удобочитаемы и прозрачны
В любом случае я бы использовал базу данных или обычную объектную модель и сериализовал / десериализировал ее для хранения.
Если вы хотите разрешить подкатегориям, вы можете использовать составной шаблон , тогда вы можете иметь объект Video
и Category
, оба реализующие интерфейс IVideoComposite
, где * Например, 1020 * имеет свойство Children
типа ObservableCollection<IVideoComposite>
.
Затем вы можете использовать неявно типизированные шаблоны данных (a HierarchicalDataTemplate
для Category
) для создания элементов в вашем TreeView
. (Для одного из Category
вы затем свяжете ItemsSource
с Children
)