私はWPF 4/C#で作業しています。私は2つのカスタムクラスを持っています:WPF - 別のオブジェクトの内部にあるカスタムオブジェクトのプロパティへのバインド
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>
(ここで<my:c2 ../>
がC2クラスをインスタンス化します。)作品を結合最初のTextBlockを。第二はしません。 obj1のプロパティにバインドできないのはなぜですか?私は直接のクラスのプロパティにバインドできるように思えるだけです。上記のように、直接クラスに属する配列の要素や子クラスのプロパティのような他のものにバインドできるようにしたい。私は何が欠けていますか? get/setを使用して直接クラスの別のプロパティにobj1.prop1をラップすると、それは機能します。しかし、私はそれをやりたくはありません。特に、配列を使い始めると、それぞれの要素を別のプロパティにラップしたくないのです!
あなたはそれに勝つ! – poindexter12
私はプロパティにバインドしようとしていますが、それはちょうど子オブジェクトに存在します。子オブジェクトがフィールドであり、プロパティに到達するためにそれを「過去にバインド」する方法がないため、問題が発生していますか? – mawrya
@mawrya子オブジェクト自体もプロパティである必要があります。つまり、 'prop1'は' obj1'のプロパティですが、 'obj1'自体は' c2'クラスのプロパティではありません。 –