如何将Treeview重新绑定到XDocument,将每个XML元素映射到Treeview中的节点?
下面的代码应该从我的角度出发(并且根据我发现的关于直接绑定的极少数帖子),但它不会:
<sdk:TreeView ItemsSource="{Binding Path=Elements}" DataContext="{Binding Path=Data}">
<sdk:TreeView.ItemTemplate>
<data:HierarchicalDataTemplate ItemsSource="{Binding Path=Elements}">
<StackPanel Orientation="Vertical">
<TextBlock Text="{Binding Name}"/>
</StackPanel>
</data:HierarchicalDataTemplate>
</sdk:TreeView.ItemTemplate>
</sdk:Treeview>
(数据是父类的DataContext上类型为XElement的属性)
我是否在某处犯了错误或者我是否真的需要实现一个IValueConverter来获取XElement的子元素?
答案 0 :(得分:1)
“Elements”成员不是Property,而是Method调用 您无法绑定到Silverlight中的方法调用。
如果你真的想让这个场景发挥作用,你可以看到两个选项:
1.使用IValueConverter提取“Elements”方法的内容
2.将XDocument以适当的层次结构包装在托管类中。
就个人而言,虽然选项#1似乎是最快的,但我相信从长远来看,它会花费你更多的时间来维护和支持,然后花费额外的10分钟来构建一个合适的域模型。
此致
- 贾斯汀·安吉尔