2011-06-10 5 views
0

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

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

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

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

ответ

0

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

+0

Спасибо за ваш ответ. Я понимаю что ты имеешь ввиду. Это даст. – obaylis

0

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

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