2011-07-12 73 views
3

我使用的FxCop爲我的WPF MVVM裝配讀,它給我的錯誤集合屬性應該僅僅

集合屬性應爲只讀

但在我的財產,我需要RaisePropertyChangedEvent ,現在如果我通過刪除其設置部分將屬性設置爲只讀,那麼我如何才能提升此事件。

語法是有點像這個

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

回答

3

你應該很少需要在集合提出一個PropertyChanged事件。使集合觀察到的,這樣它會通知每當項目添加或刪除任何綁定:

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

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

千萬不要說永遠...... 當收集屬性不需要只讀!例如,如果要在工作線程中加載大量數據,則需要將該數據加載到單獨的集合中,然後完全替換現有的集合。如果您嘗試進行更改,這是不可能的,因爲您經常需要調用主調度程序上的更改。 – cordialgerm

+0

哈哈好吧 - 爲了避免downvote我會改變措辭。我們只是說需要一個可設置的集合是一個邊緣案例。 FxCop是對的。 –

+0

這似乎缺少'readonly'關鍵字... –

2

如果你把你的收藏一個ObservableCollection當項目添加和從集合中刪除那麼「重要」的事件將是,不當集合被安裝時。我同意,與FxCop。使該集合只讀,但使其成爲一個ObservableCollection