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

时间:2013-12-15 10:00:09

标签: c# wpf xaml

在我的WPF应用程序中,我有两个类,ClassA和ClassB。我已经在Codebehind

中将DataContext设置为ClassA
this.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的值?是否有可能在不修改现有代码的情况下实现相同的目标?

1 个答案:

答案 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>