在ViewModel外部使用BindableCollection
本文关键字:BindableCollection 外部 ViewModel | 更新日期: 2023-09-27 18:17:18
在我们的团队代码审查期间,我看到了一些奇怪的事情。我们的一个开发人员创建类从文件中读取数据。在这个类中,他创建方法将这些数据返回给ViewModel。他使用BindableCollection(来自Caliburn.Micro)作为返回类型。
public BindableCollection<T> GetData()
{
//read data
}
但我认为这是一个不好的做法,因为BindableCollection是一个集合与ViewModel工作,而不是与模型。我写的代码是这样的:
public List<T> GetData()
{
//read data
}
当然在ViewModel中他写了Items=new model.GetData()
,他认为这比我的Items.AddRange(new model.GetData())
好。结果是一样的。我认为他的代码违反了SOLID规则。还有其他的理由需要修改这段代码吗?
也许ObservableCollection是你正在寻找什么?你可以用CollectionChanged Events等将它绑定到视图。
ObservableCollection
我不知道calburn。微BindableCollection,但主要是你应该使用IObserable继承集合在ViewModel和IList或ICollection在model。
当你的ViewModel正在加载数据时,你可以很容易地通过构造函数创建一个带有IList或ICollection的ObservableCollection。
我希望这对你有帮助。
var myObservableList = new ObservableCollection<MyModelType>(myModel.NiceList);