在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规则。还有其他的理由需要修改这段代码吗?

在ViewModel外部使用BindableCollection

也许ObservableCollection是你正在寻找什么?你可以用CollectionChanged Events等将它绑定到视图。

ObservableCollection

我不知道calburn。微BindableCollection,但主要是你应该使用IObserable继承集合在ViewModel和IList或ICollection在model。

当你的ViewModel正在加载数据时,你可以很容易地通过构造函数创建一个带有IList或ICollection的ObservableCollection。

我希望这对你有帮助。

var myObservableList = new ObservableCollection<MyModelType>(myModel.NiceList);
相关文章:
  • 没有找到相关文章