我正在使用 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 中,我想绑定到这些类的属性。这是我所拥有的:
<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 绑定有效。第二个没有。为什么我无法绑定到 obj1 上的属性?我似乎只能绑定到直接类的属性。我希望能够绑定到其他内容,例如属于直接类的数组中的元素或子类的属性,如上所示。我缺少什么?如果我使用 get/set 将 obj1.prop1 包装在直接类的另一个属性中,它就可以工作。但我不想这样做,特别是如果我开始使用数组,我不想将每个元素包装到单独的属性中!
Your 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; } }
}
And
<TextBlock DataContext="{DynamicResource c2}" Text="{Binding PropObj1.prop1}"/>
附言。下次最好使用具有标准命名约定的示例(例如小写字段/变量、大写属性等),以便人们更快地看到问题!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)