我试过了:
Binding binding = new Binding("Content.DataContext");
BindingOperations.SetBinding(tab, DataContextProperty, binding);
它不起作用。我不知道为什么。
答案 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;
没有任何约束力。