代码之家  ›  专栏  ›  技术社区  ›  Abdulsattar Mohammed

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

  •  0
  • Abdulsattar Mohammed  · 技术社区  · 15 年前

    我试过这个:

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

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

    2 回复  |  直到 14 年前
        1
  •  2
  •   itowlson    15 年前

    尚未为绑定指定源。因此,它使用的是 tab 元素。自从 标签 元素还没有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。

        2
  •  0
  •   Aviad P.    15 年前

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

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

    没有任何约束力。

    推荐文章