如何将控件的DataContext绑定到WPF中其内容的DataContext?

如何将控件的DataContext绑定到WPF中其内容的DataContext?,wpf,data-binding,datacontext,Wpf,Data Binding,Datacontext,我试过这个: Binding binding = new Binding("Content.DataContext"); BindingOperations.SetBinding(tab, DataContextProperty, binding); 它不起作用了。我不知道为什么。可能有更好的方法来实现您在XAML中使用绑定的目的,但是如果您仍然使用代码隐藏,您可以尝试以下方法: FrameworkElement fe = tab.Content as FrameworkElement if

我试过这个:

Binding binding = new Binding("Content.DataContext");
BindingOperations.SetBinding(tab, DataContextProperty, binding);

它不起作用了。我不知道为什么。

可能有更好的方法来实现您在XAML中使用绑定的目的,但是如果您仍然使用代码隐藏,您可以尝试以下方法:

FrameworkElement fe = tab.Content as FrameworkElement
if (fe != null)
    tab.DataContext = fe.DataContext;

没有任何绑定。

您尚未指定绑定的源。因此,它使用
选项卡
元素的本地数据上下文。由于
选项卡
元素还没有DataContext(这是您试图设置的内容),更不用说路径
Content.DataContext
有意义的内容了,这是行不通的

相反,请使用以下内容:

Binding binding = new Binding("Content.DataContext")
{
  RelativeSource = RelativeSource.Self
};
BindingOperations.SetBinding(tab, DataContextProperty, binding);
(根据您的具体需求,您可能还需要研究使用Binding.Source而不是Binding.RelativeSource。)


RelativeSource设置指定绑定到与绑定目标相同的元素,而不是本地DataContext——因此,控件的DataContext现在根据需要绑定到同一控件内容的DataContext。

您是否尝试过反向绑定?(通过xaml)?不会编译。内容被声明为类型对象,对象没有DataContext属性。