Pracuję w WPF 4/C#. Mam dwie niestandardowe klasy:WPF - powiązanie z właściwością niestandardowego obiektu znajdującego się wewnątrz innego obiektu
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";
}
}
Z poziomu XAML chcę powiązać właściwości tych klas. Oto co mam:
<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>
(tutaj <my:c2 ../>
instancję klasy C2). Pierwszy TextBlock wiążące prace. Drugi nie. Dlaczego nie mogę powiązać właściwości z obiektem obj1? Wydaje mi się, że tylko jestem w stanie powiązać właściwości natychmiastowej klasy. Chcę móc powiązać inne elementy, takie jak element w tablicy, która należy do bezpośredniej klasy lub właściwości klasy potomnej, jak pokazano powyżej. czego mi brakuje? Jeśli zawiń obiekt obj1.prop1 w inną właściwość bezpośredniej klasy za pomocą polecenia get/set, to działa. Ale nie chcę tego robić, szczególnie jeśli zacznę używać tablic, nie chcę zawijać każdego elementu w oddzielną właściwość!
Musisz pokonać to! – poindexter12
Próbuję powiązać właściwość, po prostu dzieje się na obiekcie podrzędnym. Czy problem występuje, ponieważ obiekt podrzędny jest polem i nie ma sposobu, aby "powiązać przeszłość", aby dostać się do nieruchomości? – mawrya
@mawrya sam obiekt podrzędny również musi być właściwością, tj. 'Prop1' jest właściwością na' obj1', ale 'obj1' nie jest właściwością twojej klasy' c2'. –