绑定到WPF中的祖先

时间:2010-08-04 13:49:39

标签: c# wpf data-binding

我在一个程序集中有一个窗口,它有一个TextBlock控件,我想绑定到一个类的属性值,该类属于该窗口父级的DataContext的属性。用作DataContext的类仅在第二个程序集中定义。我的问题是我需要在绑定语句中将Type指定为Type。我可以只使用两个程序集之间通用的DataContext属性的类型,还是需要使用DataContext的类型?

以下是我认为它应该如何工作的原型,但因为它不是我对某些事情感到困惑:)

大会#1
窗口

<TextBlock 
    Text="{Binding RelativeSource={RelativeSource 
        AncestorType={x:Type client:Client}}, Path=Name }"/>

大会#2
应用程序外壳

class Shell 
{
     public Client Client { get { return client; } set { client = value; } }
     OnStartup()
     {
          NavigationWindow window = new NavigationWindow();
          window.DataContext = this;
          window.Navigate(GetHomeView());
     }
}

1 个答案:

答案 0 :(得分:56)

以下内容应该有效:

<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor,
                                                         AncestorType={x:Type Window}},
                                                         Path=DataContext.Client.Name}" />