Я работаю в 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? Я только, кажется, могу связать со свойствами непосредственного класса. Я хочу иметь возможность связываться с другими вещами, такими как элемент в массиве, который принадлежит непосредственному классу или свойству дочернего класса, как показано выше. Что мне не хватает? Если я оберну obj1.prop1 в другое свойство непосредственного класса, используя get / set, это сработает. Но я не хочу этого делать, особенно если я начну использовать массивы, я не хочу заключать каждый элемент в отдельное свойство!