gpt4 book ai didi

c# - 绑定(bind)到来自两个不同类的属性值

转载 作者:行者123 更新时间:2023-11-30 20:52:46 26 4
gpt4 key购买 nike

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

this.DataContext = new ClassA();

所以在我的 XAML 中,我可以将标签内容绑定(bind)到 ClassA 的属性 Wish,如下所示

<Label Name="myLabel" FontSize="40" Content="{Binding Wish}"/>

这工作得很好。但是当我对另一个类(class) ClassB 进行同样的尝试时,问题就来了。我的 this.DataContext = new ClassA(); 仍然留在后面的代码中,我试图从 ClassB 获取属性值(是的,ClassB 有一个具有相同名称和代码的属性)做就像下面在我的 XAML 中一样

<StackPanel DataContext="{Binding ClassB}">
<Label Name="myLabelFromB" FontSize="40" Content="{Binding Wish}"/>
</StackPanel>

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

最佳答案

为此,您需要在 ClassA 中具有 ClassB 属性,如下所示:

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>

关于c# - 绑定(bind)到来自两个不同类的属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20593316/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com