Je travaille dans WPF 4/C#. J'ai deux classes personnalisées:WPF - liaison à une propriété d'un objet personnalisé situé dans un autre objet
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";
}
}
De XAML, je veux lier aux propriétés de ces classes. Voici ce que j'ai:
<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>
(ici le <my:c2 ../>
instancie la classe c2.) Les premiers travaux de liaison TextBlock. La seconde ne le fait pas. Pourquoi ne puis-je pas lier à une propriété sur l'obj1? Je semble seulement être en mesure de se lier à des propriétés de la classe immédiate. Je veux être capable de lier à d'autres choses comme un élément dans un tableau qui appartient à la classe immédiate ou une propriété d'une classe enfant, comme indiqué ci-dessus. Qu'est-ce que je rate? Si j'enveloppe obj1.prop1 dans une autre propriété de la classe immédiate en utilisant get/set, cela fonctionne. Mais je ne veux pas avoir à faire cela, surtout si je commence à utiliser des tableaux, je ne veux pas envelopper chaque élément dans une propriété séparée!
Vous battez-vous! – poindexter12
J'essaie de lier à une propriété, il se trouve juste sur un objet enfant. Le problème se produit-il parce que l'objet enfant est un champ et qu'il n'y a aucun moyen de le «lier» pour accéder à la propriété? – mawrya
@mawrya l'objet enfant lui-même doit également être une propriété, c'est-à-dire que 'prop1' est une propriété de' obj1', mais 'obj1' lui-même n'est pas une propriété de votre classe' c2'. –