我在一个程序集中有一个窗口,它有一个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());
}
}
答案 0 :(得分:56)
以下内容应该有效:
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor,
AncestorType={x:Type Window}},
Path=DataContext.Client.Name}" />