Я работаю над приложением WPF, которое имеет древовидное представление, представляющее XML. Я загружаю XML в XDocument, затем привязываю TreeView к этому объекту.
Теперь, используя Шаблон MVVM, я хочу предоставить ViewModel поверх XDocument. Какие вещи я должен реализовать в классе ViewModel.
Я думаю о
Я иду в правильном направлении? Что еще мне нужно сделать, чтобы сделать его более понятным, модульным и в то же время легким для понимания.
Должен ли я использовать RoutedCommands или реализовать интерфейс ICommand и создавать свои команды? Как насчет использования прикрепленных свойств для CommandBindings? имеет ли смысл делать это в приложении treeview, о котором я говорю? Я немного ошеломлен из-за того, что доступно так много вариантов для реализации этого.
У кого-нибудь есть ссылки, пример кода, который делает такие вещи? Эталонная реализация может быть?





Я с вами. Я начал с
(ui) <-> (xml)
где xml представлен как LINQy XElements, поэтому я получил уведомление PropertyChange.
Затем я добавил несколько вспомогательных классов без сохранения состояния, чтобы помочь мне работать с xml (предоставлять свойства, проверять данные и т. д.). Я бы связал XElements в ObservableCollections, чтобы можно было к ним привязаться.
Прочитал о M-V-VM и решил преобразовать мои вспомогательные классы в ViewModels. Проблемы: Вспомогательные классы живут в пространстве имен модели данных, которое ничего не знает о пользовательском интерфейсе. Вспомогательные классы знают, как преобразовать строку базы данных в XElement, ViewModel никогда этого не увидит. Вспомогательные классы работают с xml. ViewModel не должен знать или заботиться.
Итак, я действительно подумываю о внедрении
(ui) <-> (viewmodel) <-> (helper) <-> (xml)
но я просто отказываюсь поднимать события PropChange в помощнике только для того, чтобы повторно поднять их в модели просмотра.