我有一个包含(Person)Patient
属性的ViewModel。在我的视图中,我绑定了Patient
的一些属性,例如Name
和Age
。
问题是:如果我更改患者,我的视图中没有任何反应,除非我明确通知每个属性更改(我使用Caliburn.Micro
因此PropertyChangedBase
和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屏幕,有三个区域,每个区域都有自己的视图和视图模型:人员列表,单个人的信息以及与每个人相关的医疗程序列表。
我几乎可以肯定我在这里遗漏了一些东西。我想在人员列表中选择一个人,然后显示人员数据和人员程序的区域将通过绑定进行更新,而无需手动通知新选择的人员的每个属性更改。
答案 0 :(得分:8)
我使用feature of PropertyChanged
event解决了问题,{{3}}使用null
作为参数:
PropertyChanged事件可以指示对象上的所有属性 已使用null或String.Empty作为属性名称进行更改 在PropertyChangedEventArgs。
然后,我解决了我的问题:
public Paciente Paciente {
get { return _paciente; }
set {
_paciente = value;
NotifyOfPropertyChange(null);
}
}
它有效!