Отображение XDocument в виде дерева WPF с использованием MVVM ViewModel - PullRequest
1 голос
/ 13 января 2011

У меня XSD хранятся в виде данных в поле SQL Server XML или oracle XMLtype.Я извлекаю XSD из базы данных как XDocument.Я хочу отобразить этот XDocument в виде дерева WPF.Это относительно просто, если я связываю Xdocument напрямую с древовидной структурой, используя xmldataprovider иierarchicalDataTemplate.

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

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

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

1 Ответ

0 голосов
/ 13 января 2011

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

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

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

Что вы подразумеваете под select?

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

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

...