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

时间:2010-01-05 05:01:03

标签: wpf data-binding datacontext

我试过了:

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

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

2 个答案:

答案 0 :(得分:2)

您尚未指定绑定的来源。因此,它使用tab元素的本地DataContext。由于tab元素还没有DataContext(这是你想要设置的),更不用说路径Content.DataContext有意义的那个,这不会起作用。< / p>

而是使用类似的东西:

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

(根据您的具体要求,您可能还想使用Binding.Source而不是Binding.RelativeSource进行调查。)

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

答案 1 :(得分:0)

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

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

没有任何约束力。