2

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

4

1 回答 1

1

“元素”成员不是属性,而是方法调用。
您不能绑定到 Silverlight 中的方法调用。

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

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

真诚的
——贾斯汀·安吉尔

于 2010-04-18T16:37:13.867 回答