Estoy trabajando en WPF 4/C#. Tengo dos clases personalizadas:WPF - enlace a una propiedad de un objeto personalizado que está dentro de otro objeto
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";
}
}
Desde dentro de XAML, deseo vincular las propiedades de estas clases. Aquí es lo que tengo:
<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>
(Aquí el <my:c2 ../>
instancia la clase C2.) El primer TextBlock obras vinculante. El segundo no. ¿Por qué no puedo vincularme a una propiedad en el obj1? Solo parezco capaz de vincularme a las propiedades de la clase inmediata. Deseo vincularme a otras cosas, como un elemento de una matriz que pertenece a la clase inmediata o una propiedad de una clase secundaria, como se muestra arriba. ¿Qué me estoy perdiendo? Si envuelvo el obj1.prop1 en otra propiedad de la clase inmediata usando get/set, funciona. Pero no quiero tener que hacer eso, particularmente si empiezo a usar matrices, ¡no quiero envolver cada elemento en una propiedad separada!
¡Eres mejor! – poindexter12
ESTOY intentando vincularme a una propiedad, simplemente sucede que está en un objeto secundario. ¿Se está produciendo el problema porque el objeto secundario es un campo y no hay forma de "pasarlo" para llegar a la propiedad? – mawrya
@mawrya el objeto hijo en sí también necesita ser una propiedad, es decir, 'prop1' es una propiedad en' obj1', pero 'obj1' no es una propiedad de su clase' c2'. –