2011-07-12 1 views
3

私はWPF MVVMアセンブリのためのFxCopのを使用していますが、それはコレクションプロパティは、

コレクションプロパティのみ

を読まれるべきである。しかし、私の財産に私はRaisePropertyChangedEventする必要が私にエラーを与えて読まれるべきです今、私は設定されたセクションを削除することによってのみ読み取るプロパティを設定する場合、どのように私はこのイベントを発生させることができます。

構文は多少あなたはめったにコレクションにPropertyChangedイベントを調達する必要があるべきではありません。この

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

答えて

3

のようなものです。それはアイテムが追加または削除されるたびにすべてのバインディングを通知するようコレクションが観察してください:

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にします。

関連する問題