绑定到来自两个不同类的属性值

sni*_*kid 3 c# wpf xaml

在我的 WPF 应用程序中,我有两个类,ClassA 和 ClassB。我已经在代码隐藏中将 DataContext 设置为 ClassA

this.DataContext = new ClassA();
Run Code Online (Sandbox Code Playgroud)

所以在我的 XAML 中,我可以将标签内容绑定到WishClassA 的属性,如下所示

<Label Name="myLabel" FontSize="40" Content="{Binding Wish}"/>
Run Code Online (Sandbox Code Playgroud)

这工作得很好。但是当我尝试使用另一个类 ClassB 时,问题就出现了。由于我this.DataContext = new ClassA();仍然留在后面的代码中,我试图从 ClassB 获取属性值(是的,ClassB 有一个具有相同名称和代码的属性)在我的 XAML 中执行如下操作

<StackPanel DataContext="{Binding ClassB}">
            <Label Name="myLabelFromB" FontSize="40" Content="{Binding Wish}"/>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)

我失败了。当我运行时,MainWindow 只显示第一个标签。为什么即使在其父级的 DataContext 设置为 ClassB 时也myLabelFromB没有获得 的值ClassB.Wish?是否可以在不修改我现有代码的情况下实现相同的目标?

Roh*_*ats 5

为了让它工作,你需要ClassB property in ClassA有点像这样:

public class ClassA
{
   public ClassA()
   {
      this.ClassB = new ClassB();
   }

   public string Wish { get; set;}
   public ClassB ClassB { get; set;}
}
Run Code Online (Sandbox Code Playgroud)

那么这也将起作用:

<StackPanel>
   <Label Name="myLabelFromB" FontSize="40" Content="{Binding ClassB.Wish}"/>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)