假设我有一个具有以下属性和方法的Person:
public string FirstName
public string LastName
public House CurrentHouse
public void BuildHouse(string streetAddress)
House是一个单独的类,有一些简单的属性,如街道地址。
当我第一次创建Person
对象时,我将WPF窗口数据绑定到它。人员以FirstName
和LastName
开头,但他们的CurrentHouse
为空。 (这是一个愚蠢的例子,但为了论证,让我们说这个人必须先建造一个房子才能生活。)数据绑定到FirstName
和LastName
按预期工作。
现在让我们说我想把这个人搬进一所房子。逻辑看起来像:
public void BuildHouse(string streetAddress)
{
this.CurrentHouse = new House()
{
StreetAddress = streetAddress;
};
}
我的WPF窗口的数据上下文是此person对象。我有一个标签,显示该人的地址(绑定到MyPerson.CurrentHouse.StreetAddress
,UpdateSourceTrigger
为PropertyChanged
。当我第一次显示屏幕时,CurrentHouse
对象为空,标签为空(预期行为)。但是,当我调用BuildHouse("123 anywhere st")
时,我希望数据绑定标签的值更改为“123 anywhere st”。
这不是正在发生的事情,我开始怀疑它是因为当窗口最初打开时,数据绑定Person
对象的CurrentHouse属性为null。我的怀疑是否正确?如果是这样,一旦CurrentHouse对象不再为null,我需要做什么才能在标签上启用数据绑定?
答案 0 :(得分:1)
这不是正在发生的事情,我开始怀疑它是因为当窗口最初打开时,数据绑定Person对象的CurrentHouse属性为null。我的怀疑是否正确?如果是这样,一旦CurrentHouse对象不再为null,我需要做什么才能在标签上启用数据绑定?
这是可能的,但您的Person
和House
类更有可能需要实施INotifyPropertyChanged
。
实现此接口(正确)允许WPF知道对象上的属性已更改(例如正在设置的新House
,或者更改房屋内的地址等)。