hel*_*ker 2 data-binding mvvm caliburn.micro
我有一个包含(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??
}
}
}
Run Code Online (Sandbox Code Playgroud)
更广泛的应用程序上下文是这样的:我有一个PersonManager屏幕,有三个区域,每个区域都有自己的视图和视图模型:人员列表,单个人的信息以及与每个人相关的医疗程序列表.
我几乎肯定我在这里遗漏了一些东西.我想在人员列表中选择一个人,然后显示人员数据和人员程序的区域将通过绑定进行更新,而不必手动通知新选择的人员的每个属性更改.
我使用事件的一个功能PropertyChanged
解决了这个问题,该事件null
用作参数:
PropertyChanged事件可以通过使用null或String.Empty作为PropertyChangedEventArgs中的属性名称来指示对象上的所有属性都已更改.
然后,我解决了我的问题:
public Paciente Paciente {
get { return _paciente; }
set {
_paciente = value;
NotifyOfPropertyChange(null);
}
}
Run Code Online (Sandbox Code Playgroud)
它工作了!
归档时间: |
|
查看次数: |
2289 次 |
最近记录: |