Wpf treeview selectedItem привязка данных

У меня есть представление, где у меня есть объект, связанный с древовидной структурой. Объект имеет несколько коллекций (разных типов), поэтому я использую hiearchical templates с CompositeCollection, чтобы отображать их в древовидной структуре.

Затем я получил текстовое поле, которое привязано к treeview selectedItem. Здесь я сериализую selectItem в XML и отображаю его в текстовом поле для редактирования.

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

Как я могу чисто сохранить изменения в текстовом поле в синхронизации с моим объектом, привязанным к древовидной структуре?

Ответ 1

Я не думаю, что вам нужно сделать двустороннюю привязку данных непосредственно к элементу SelectedItem, вы должны выставить свойство в классе связанного объекта, который возвращает сериализованную строку, а после set соответствующим образом изменяет объект. Это должно быть проще, чем иметь дело с объектом в целом.

Ответ 2

Ваш XML-поток должен быть представлен как свойство на вашем SelectedItem node, и ваш TextBox должен каким-то образом привязываться к этому. Выбранный элемент доступен только для чтения, но объект, на который он ссылается, не является. Если вы используете двустороннюю привязку к этому свойству, вы можете правильно повлиять на свои изменения. Это будет сделано в DataTemplates и HiearchicalDataTemplates, которые вы используете, поскольку они привязаны к базовому представлению данных узлов, которые вы представляете с помощью TreeView.