2011-01-13 7 views
1

У меня XSD хранится как данные в XML-формате SQL Server или в oracle XMLtype. Я извлекаю XSD из базы данных как XDocument. Я хочу отобразить этот XDocument в дереве WPF. Это относительно прямо, если я привязываю Xdocument непосредственно к древовидной структуре с помощью xmldataprovider и иерархического шаблона DataTemplate.Отображение XDocument в виде дерева WPF с использованием MVVM ViewModel

Однако мое приложение использует шаблон mvvm, и я хотел бы представить xdocument в слое ViewModel, который затем связывается с деревом аналогично статье Джоша Смита о привязке древовидного дерева WPF к ViewModels. http://www.codeproject.com/KB/WPF/TreeViewWithViewModel.aspx

Моя цель - выбрать XNode XSD (XDocument).

Любые предложения относительно того, как я мог бы представить Xdocument XSD в ViewModel, чтобы я мог выбрать XNode?

ответ

0

Если вы выполняете операции только для чтения, я бы рекомендовал вам сохранить его простым и не вводить новые классы, которые не приносят никакой пользы. Просто оставьте комментарий, что вы должны добавить модель представления, если вы хотите поддержать редактирование структуры. Даже если вы хотите иметь возможность редактировать документ, вы все равно сможете напрямую привязываться к документу и узлам в зависимости от ваших потребностей.

Если вам нужна более продвинутая поддержка (например, INotifyPropertyChanged), я предлагаю вам создать иерархию классов, таких как оригинальный API, на основе XObject. Я бы добавил только свойства, которые я планировал непосредственно поддерживать в пользовательском интерфейсе. Затем я создавал отдельный класс модели, который мог бы конвертировать из иерархии XDocumentViewModel в реальный XDocument и обратно.

... как [представить] Xdocument XSD в ViewModel, чтобы я мог выбрать XNode.

Что вы подразумеваете под своим именем?

Если вы имеете в виду в пользовательском интерфейсе, то об этом заботятся в XAML.

Если вы говорите о запросе модели представления, вы можете попытаться использовать существующий API запросов LINQ XML к базовому документу. Храните внутренний словарь, сопоставляющий XObjects с объектами модели просмотра, и когда вы получаете результаты, просто просмотрите каждый результат в словаре перед его возвратом.

Смежные вопросы