2

我有一个包含(Person)Patient属性的 ViewModel。在我看来,我绑定到 的一些属性Patient,比如NameAge

问题是:如果我更改 Patient,在我看来什么都不会发生,除非我明确通知每个属性更改(我正在使用Caliburn.MicroandPropertyChangedBase东西NotifyOfPropertyChange):

public class PersonViewModel : PropertyChangedBase {

    Person _patient;

    public Person Patient {
        get { return _patient; }
        set {
            _patient = value;
            NotifyOfPropertyChange(() => Patient); // this doesn't update the view
            NotifyOfPropertyChange(() => Name); // this updates, but would I need one line for each property??
        }
    }
}

更广泛的应用程序上下文是这样的:我有一个 PersonManager 屏幕,具有三个区域,每个区域都有它们的视图和视图模型:人员列表、单个人员的信息以及与每个人相关的医疗程序列表。

我几乎可以肯定我在这里遗漏了一些东西。我想在人员列表中选择一个人,然后显示人员数据和人员程序的区域将通过绑定更新,而不必手动通知新选择的人员的每个属性更改。

4

1 回答 1

8

我已经使用event的功能PropertyChanged解决了这个问题,该功能null用作参数:

PropertyChanged 事件可以通过使用 null 或 String.Empty 作为 PropertyChangedEventArgs 中的属性名称来指示对象上的所有属性都已更改。

然后,我解决了我的问题:

    public Paciente Paciente {
        get { return _paciente; }
        set {
            _paciente = value;
            NotifyOfPropertyChange(null);
        }
    }

它奏效了!

于 2013-05-07T14:34:54.343 回答