Silverlight递归将Treeview绑定到XDocument

时间:2010-04-18 11:33:18

标签: silverlight data-binding treeview linq-to-xml xelement

如何将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的子元素?

1 个答案:

答案 0 :(得分:1)

“Elements”成员不是Property,而是Method调用 您无法绑定到Silverlight中的方法调用。

如果你真的想让这个场景发挥作用,你可以看到两个选项:
1.使用IValueConverter提取“Elements”方法的内容 2.将XDocument以适当的层次结构包装在托管类中。

就个人而言,虽然选项#1似乎是最快的,但我相信从长远来看,它会花费你更多的时间来维护和支持,然后花费额外的10分钟来构建一个合适的域模型。

此致
- 贾斯汀·安吉尔