无法在"绑定"类型的"源"属性上设置"绑定"

Ami*_*aei 8 c# wpf xaml binding

无法在"绑定"类型的"源"属性上设置"绑定".'绑定'只能在DependencyObject的DependencyProperty上设置.

    <TreeView Height="400" Width="400">
    <TreeViewItem ItemsSource="{Binding Source={Binding Path=Data}, XPath=*, 
Converter={StaticResource stringToXmlDataProviderConverter},ConverterParameter=/root }" Header="header" />
    </TreeView>
Run Code Online (Sandbox Code Playgroud)

我尝试使用代码示例.不同之处在于我想将ItemsSource绑定到datacontext中的数据.转换器没有问题.

编辑:

<TreeViewItem ItemsSource="{Binding Path=Data}" Header="Parameters" />
Run Code Online (Sandbox Code Playgroud)

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

编辑: 此代码更好.是否有一种在ThreeView中读取XML的通用方法?我不知道XML的结构.在我看到的所有示例中,您必须声明子节点类型.

<TreeViewItem DataContext="{Binding Path=Data, Converter={StaticResource stringToXmlDataProviderConverter}}" ItemsSource="{Binding .}" Header="Parameters" />
Run Code Online (Sandbox Code Playgroud)

Mat*_*ský 5

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

{Binding Path=Data, XPath=*, Converter={StaticResource stringToXmlDataProviderConverter},ConverterParameter=/root}
Run Code Online (Sandbox Code Playgroud)

编辑:

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

1) 您是否正确设置了 DataContext?

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

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

4) 属性是否正确更新?必须适用以下任一场景:

  • 属性是 DependecyProperty

  • 该属性通过 INotofyPropertyChanged 通知其更改

  • 我们在调用 InitializeComponent() 之前确定的属性值