WPF - привязка к свойству настраиваемого объекта, находящегося внутри другого объекта

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

9
задан mawrya 16 December 2010 в 00:01
поделиться