我在Visual Studio中运行代码分析并得到以下警告:
CA2227:集合属性应该是只读的。
我知道这意味着什么,为什么我不应该有公共场合。 但我不确定如何处理它。
在我的ViewModel
我有这个属性:
private ObservableCollection<Foo> _foos = new ObservableCollection<Foo>();
public ObservableCollection<Foo> Foos
{
get { return _foos; }
set
{
_foos = value;
OnPropertyChanged();
}
}
此属性绑定到视图。
如何填充此集合的逻辑在业务层中。有一个返回
的函数ObservableCollection<Foo>
如果Foos没有制定者,我就不能这样做。
Foos = BusinessLayer.GetFoos();
我可以这样做:
_foos = BusinessLayer.GetFoos();
OnPropertyChanged("Foos");
或者这个:
var foos = BusinessLayer.GetFoos();
foreach(var foo in foos)
{
Foos.Add(foo);
}
哪种方式适合?还有更好的方法吗?
答案 0 :(得分:1)
只需使用
Foos.Clear();
Foos.AddRange(BusinessLayer.GetFoos());
但是,此代码会丢失所有更新。