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