我在我的WPF MVVM程序集中使用FxCop,它给了我错误
集合属性应该是只读的
但是在我的属性中我需要RaisePropertyChangedEvent,现在如果我通过删除它的set部分将该属性设置为只读,我怎么能引发这个事件。
语法有点像这样
public List Employees
{
get { return _employees; }
set
{
if (ReferenceEquals(_employees, value))
return;
_employees = value;
RaisePropertyChanged("Employees");
}
}
答案 0 :(得分:3)
您应该很少需要在集合上引发PropertyChanged事件。使集合可观察,以便在添加或删除项目时通知任何绑定:
public IList<Employee> Employees
{
get;
private set;
}
// in your constructor:
this.Employees = new ObservableCollection<Employee>();
答案 1 :(得分:2)
如果您将集合设置为ObservableCollection,那么“重要”事件将是在集合中添加和删除项目时,而不是在集合实例化时。我同意FxCop。将集合设为只读,但将其设为ObservableCollection