我在一个程序集中有一个窗口,该窗口具有一个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}" />