次のプロパティとメソッドを持つクラスPersonがあるとします。
public string FirstNamepublic string LastNamepublic House CurrentHousepublic 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でなくなったら、ラベルでデータバインディングを有効にするために何をする必要がありますか?