[英]Binding Issue constructor viewmodel
我对mvvm比较陌生,但是我对从视图模型进行绑定存在疑问。 我有一个viewmodel,在它的构造函数中,我想填充一个observablecollection。 我的构造函数如下所示:
public StudySelectionViewModel() : base() {
_studyRepository = StudyRepository.Instance;
InitializeViewModelData();
}
InitializeViewModelData()看起来像这样:
private void InitializeViewModelData() {
_studyRepository.RetrieveModalityTypes();
RaisePropertyChanged("ModalityTypes");
}
我的属性ModalityTypes看起来像这样:
public ObservableCollection<ModalityType> ModalityTypes {
get {
return _studyRepository.ModalityTypes;
}
}
不用说,我的存储库会调用数据库并检索数据。 调试时,看起来RaisePropertyChanged比我的_studyRepository.RetrieveModalityTypes方法执行得更早,因此它绑定到一个空属性。
我在这里想念什么吗? 我的设计不好吗? 有任何想法吗?
提前致谢,
表单初始化时,绑定将检查属性。 当引发PropertyChanged
通知时,它还将检查属性-因此您可能会两次调用该属性的getter
我假设您获取数据的电话是网络服务电话还是其他电话? Silverlight是异步的,因此您需要考虑初始化表单后,Web服务调用可能会返回
这里有两件事要考虑。
如果确实必须在数据服务数据就绪回调中用新集合替换集合,那么请确保您这样编写集合设置器:
public ObservableCollection<ModalityType> ModalityTypes { get { return _studyRepository.ModalityTypes; } set { this.__studyRepository.ModalityTypes = value; RaisePropertyChanged("ModalityTypes"); {
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.