WPF不会让我在绑定的路径上放置绑定 - 还有另外一种方法吗?

dev*_*xer 5 wpf xaml binding datatemplate

我有一个DataTemplateCellTemplate用作a的GridViewColumn.

我想写这样的东西DataTemplate:

<DataTemplate
    x:Key="_myTemplate">
    <TextBlock
        Text="{Binding Path={Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type GridViewColumn}}, Path=Header}}" />
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)

GridView被绑定到DataTable了,我要绑定的列的DataTable名字等于的头GridViewColumnDataTemplate连接到.[我希望这是有道理的!]

不幸的是,这不起作用.我得到一个XamlParseException:"无法在'Binding'类型的'Path'属性上设置''绑定'.'绑定'只能在DependenceyObject的DependencyProperty上设置."

我怎么设置它?

编辑(由DanM提升评论的问题)

我基本上需要一个DataTemplate绑定由连接的DataContext列和哪个列决定DataTemplate.还有其他选择吗?

Ant*_*nes 0

您不能将 Binding 分配给任何属性。该属性必须是对象的类型Binding或实现为对象的依赖属性。

Binding 类的属性Path是类型PropertyPath,并且 Binding 不将 Path 属性实现为依赖属性。因此,您无法按照您尝试的方式动态绑定路径。

编辑

您基本上希望将元数据嵌入到驱动 DataTemplate 配置的绑定数据中。这不能单独在 XAML 中完成。您至少需要代码的一些支持。

在我看来,最好的方法是使用 ViewModel。这使得 XAML 中的绑定变得简单,并将“什么与什么绑定”决策推送到 ViewModel 的代码中。