在我的WPF应用程序中,我有两个类,ClassA和ClassB。我已经在Codebehind
中将DataContext设置为ClassAthis.DataContext = new ClassA();
所以在我的XAML中,我可以将标签内容绑定到ClassA的属性Wish
,如下所示
<Label Name="myLabel" FontSize="40" Content="{Binding Wish}"/>
这完全没问题。但问题来自于我正在尝试与另一个类ClassB相同。我的this.DataContext = new ClassA();
仍然留在代码中,我试图从ClassB获取属性值(是的,ClassB有一个具有相同名称和代码的属性),如下所示在我的XAML中
<StackPanel DataContext="{Binding ClassB}">
<Label Name="myLabelFromB" FontSize="40" Content="{Binding Wish}"/>
</StackPanel>
我失败了。当我运行时,MainWindow只显示第一个标签。
为什么myLabelFromB
即使其父级的DataContext设置为ClassB,也不会获得ClassB.Wish
的值?是否有可能在不修改现有代码的情况下实现相同的目标?
答案 0 :(得分:3)
要实现这一目标,您需要ClassB property in ClassA
有点像这样:
public class ClassA
{
public ClassA()
{
this.ClassB = new ClassB();
}
public string Wish { get; set;}
public ClassB ClassB { get; set;}
}
然后这也会起作用:
<StackPanel>
<Label Name="myLabelFromB" FontSize="40" Content="{Binding ClassB.Wish}"/>
</StackPanel>