gpt4 book ai didi

c# - WPF - 绑定(bind)到另一个对象内的自定义对象的属性

转载 作者:太空狗 更新时间:2023-10-29 17:32:17 26 4
gpt4 key购买 nike

我在 WPF 4/C# 中工作。我有两个自定义类:

public class c1 {
public string prop1 { get; set; }

public c1() {
prop1 = "world";
}
}

public class c2 {
public string prop1 { get; set; }
public c1 obj1 = new c1();

public c2() {
prop1 = "hello";
}
}

在 XAML 中,我想绑定(bind)到这些类的属性。这是我所拥有的:

<Window.Resources>
<my:c2 x:Key="c2"/>
</Window.Resources>
<StackPanel>
<TextBlock DataContext="{DynamicResource c2}" Text="{Binding prop1}"/>
<TextBlock DataContext="{DynamicResource c2}" Text="{Binding obj1.prop1}"/>
</StackPanel>

(此处 <my:c2 ../> 实例化了 c2 类。)第一个 TextBlock 绑定(bind)有效。第二个没有。为什么我不能绑定(bind)到 obj1 上的属性?我似乎只能绑定(bind)到直接类的属性。我希望能够绑定(bind)到其他东西,例如属于直接类的数组中的元素或子类的属性,如上所示。我错过了什么?如果我使用 get/set 将 obj1.prop1 包装在直接类的另一个属性中,它就可以工作。但我不想这样做,尤其是当我开始使用数组时,我不想将每个元素包装到一个单独的属性中!

最佳答案

您的 obj1 是一个字段,而不是一个属性,因此您无法访问 C1 对象。

考虑一下:

public class c2 {
public string prop1 { get; set; }
private readonly c1 _obj1;

public c2() {
prop1 = "hello";
_obj1 = new c1();
}

public c1 PropObj1 { get { return _obj1; } }
}

<TextBlock DataContext="{DynamicResource c2}" Text="{Binding PropObj1.prop1}"/>

附言。下次最好使用具有标准命名约定(例如小写字段/变量、大写属性等)的示例,让人们更快地看到问题!

关于c# - WPF - 绑定(bind)到另一个对象内的自定义对象的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4456249/

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