我在一个程序集中有一个窗口,该窗口具有一个TextBlock控件,我想将其绑定(bind)到一个类的Property值,该类的值是该Windows父级的DataContext的属性。用作DataContext的类仅在第二个程序集中定义。我的问题是我需要在绑定(bind)语句中将哪种类型指定为“类型”。我可以只使用两个程序集之间共有的DataContext属性的类型,还是需要使用DataContext的类型?

以下是我认为应如何工作的原型(prototype),但由于并非如此,我对某些事情感到困惑:)

Assembly #1
window

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

Assembly #2
应用程序 shell
class Shell
{
     public Client Client { get { return client; } set { client = value; } }
     OnStartup()
     {
          NavigationWindow window = new NavigationWindow();
          window.DataContext = this;
          window.Navigate(GetHomeView());
     }
}

最佳答案

以下应该工作:

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

08-25 13:14
查看更多