集合属性应该是只读的

时间:2011-07-12 04:27:44

标签: c# wpf mvvm

我在我的WPF MVVM程序集中使用FxCop,它给了我错误

  

集合属性应该是只读的

但是在我的属性中我需要RaisePropertyChangedEvent,现在如果我通过删除它的set部分将该属性设置为只读,我怎么能引发这个事件。

语法有点像这样

public List Employees
{
    get { return _employees; }
    set
    {
        if (ReferenceEquals(_employees, value))
            return;
        _employees = value;
        RaisePropertyChanged("Employees");
    }
}

2 个答案:

答案 0 :(得分:3)

您应该很少需要在集合上引发PropertyChanged事件。使集合可观察,以便在添加或删除项目时通知任何绑定:

public IList<Employee> Employees
{
    get; 
    private set;
}

// in your constructor:
this.Employees = new ObservableCollection<Employee>();

答案 1 :(得分:2)

如果您将集合设置为ObservableCollection,那么“重要”事件将是在集合中添加和删除项目时,而不是在集合实例化时。我同意FxCop。将集合设为只读,但将其设为ObservableCollection