次のプロパティとメソッドを持つクラスPersonがあるとします。
public string FirstName
public string LastName
public House CurrentHouse
public void BuildHouse(string streetAddress)
Houseは、番地などのいくつかの単純なプロパティを持つ別のクラスです。
最初にオブジェクトを作成するときにPerson
、WPFウィンドウをオブジェクトにデータバインドします。人はaFirstName
とLastName
で始まりますが、それらCurrentHouse
はnullです。(これはばかげた例ですが、議論のために、人が住む前に家を建てなければならないとしましょう。)データバインディングは期待どおりFirstName
にLastName
機能します。
この人を家に移したいとしましょう。ロジックは次のようになります。
public void BuildHouse(string streetAddress)
{
this.CurrentHouse = new House()
{
StreetAddress = streetAddress;
};
}
WPFウィンドウのデータコンテキストは、この人物オブジェクトです。その人の住所を示すラベルがあります(のでバインドされMyPerson.CurrentHouse.StreetAddress
ていUpdateSourceTrigger
ますPropertyChanged
)。最初に画面を表示したとき、CurrentHouse
オブジェクトはnullであり、ラベルは空白です(予期される動作)。ただし、を呼び出すとBuildHouse("123 anywhere st")
、データバインドされたラベルの値が「123anywherest」に変更されると思います。
これは起こっていることではなく、ウィンドウが最初に開いているとき、データバインドされたオブジェクトのCurrentHouseプロパティPerson
がnullであるためだと私は考え始めています。私の疑惑は正しいですか?その場合、CurrentHouseオブジェクトがnullでなくなったら、ラベルでデータバインディングを有効にするために何をする必要がありますか?