1

假设我有一个类 Person 具有以下属性和方法:

  • public string FirstName
  • public string LastName
  • public House CurrentHouse
  • public void BuildHouse(string streetAddress)

House 是一个单独的类,具有一些简单的属性,例如街道地址。

当我第一次创建一个Person对象时,我将一个 WPF 窗口数据绑定到它。Person 以FirstNameand开头LastName,但它们CurrentHouse为空。(这是一个愚蠢的例子,但为了争论起见,假设这个人必须先建造一所房子才能住在里面。)数据绑定到FirstName并按LastName预期工作。

现在假设我想把这个人搬进一所房子。逻辑看起来像:

public void BuildHouse(string streetAddress)
{
    this.CurrentHouse = new House()
    {
        StreetAddress = streetAddress;
    };
}

我的 WPF 窗口的数据上下文是这个人对象。我有一个显示此人地址的标签(MyPerson.CurrentHouse.StreetAddressUpdateSourceTriggerof绑定PropertyChanged)。当我第一次显示屏幕时,CurrentHouse对象为空且标签为空白(预期行为)。但是,当我调用时BuildHouse("123 anywhere st"),我希望数据绑定标签的值更改为“123 任何地方”。

这不是正在发生的事情,我开始怀疑这是因为当窗口最初打开时,数据绑定Person对象的 CurrentHouse 属性为空。我的怀疑正确吗?如果是这样,一旦 CurrentHouse 对象不再为空,我需要做什么才能在标签上启用数据绑定?

4

1 回答 1

1

这不是正在发生的事情,我开始怀疑这是因为当窗口最初打开时,数据绑定的 Person 对象的 CurrentHouse 属性为空。我的怀疑正确吗?如果是这样,一旦 CurrentHouse 对象不再为空,我需要做什么才能在标签上启用数据绑定?

这是可能的,但您PersonHouse类更有可能需要实现INotifyPropertyChanged.

实现这个接口(正确地)是让 WPF 知道你的对象上的一个属性已经改变了(比如新House的设置,或者房子里的地址改变等)。

于 2013-01-14T19:33:01.570 回答