2011-02-07 39 views
8

无法在“绑定”类型的“来源”属性上设置“绑定”。 '绑定'只能在DependencyObject的DependencyProperty上设置。无法在“绑定”类型的“来源”属性上设置“绑定”

<TreeView Height="400" Width="400"> 
    <TreeViewItem ItemsSource="{Binding Source={Binding Path=Data}, XPath=*, 
Converter={StaticResource stringToXmlDataProviderConverter},ConverterParameter=/root }" Header="header" /> 
    </TreeView> 
  • 什么是错的ItemsSource =“{绑定源= {绑定路径=数据}?

    Data = "<root><parm1>1</parm1><parm2>2</parm2><parm3>3</parm3></root>" 
    

我尝试使用this代码示例。 的不同的是我想将ItemsSource绑定到datacontext中的数据。 转换器没有问题。

编辑:

<TreeViewItem ItemsSource="{Binding Path=Data}" Header="Parameters" /> 

填充TreeView的一个元素(字符串)。所以datacontext是正确的。

编辑: 此代码效果更好。有没有一种通用的方式来读取ThreeView中的XML?我不知道XML的结构。在我看到的所有例子中,你必须声明子节点类型。

<TreeViewItem DataContext="{Binding Path=Data, Converter={StaticResource stringToXmlDataProviderConverter}}" ItemsSource="{Binding .}" Header="Parameters" /> 
+0

“数据”是什么样的?它的数据类型是什么?它的属性是什么? – Gabe 2011-02-07 20:05:25

回答

4

绑定的属性源无法绑定,因为它不是依赖属性。你确定你不想这样做? :

{Binding Path=Data, XPath=*, Converter={StaticResource stringToXmlDataProviderConverter},ConverterParameter=/root} 

编辑:

的清单来检查调试时绑定:

1)你有没有正确设置的DataContext?

2)该属性是否对XAML代码可见?

3)属性是否被访问(在其getter中放置一个断点)。它是否会返回应有的价值?

4)属性更新是否正确?任一下列情况下必须适用:

  • 该物业是DependecyProperty

  • 物业通知有关 其通过INotofyPropertyChanged

  • 更改属性值我们调用的InitializeComponent()

  • 之前敲定
+0

解决方案是什么? – 2011-02-07 19:49:58