我是一名从事WPF 4 / C#开发的IT技术人员。我有两个自定义类:
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包装在直接类的另一个属性中,它可以工作。但我不想这样做,特别是如果我开始使用数组,我不想将每个元素都包装成单独的属性!
prop1
是在obj1
上的一个属性,但obj1
本身不是你的c2
类的一个属性。 - Kirk Broadhurst