1

私はMVVMに少し慣れていないので、疑問に思っていました

ObservableCollection<Differences> Diffsプロパティを定義したとしましょう。次のプロパティもあります。

public bool IsSame
{
    get
    {
         return Diffs.Count == 0;
    }
 }

OnPropertyChangedforを実装する方法がわかりませんIsSame。これは Diff リストから暗黙的であるためです。

  • ListOnCollectionChangedイベントにアタッチして、変更されたかどうかを確認する必要がありますIsSameか?
  • とにかくバッキングフィールドを使用して List を処理する必要がありOnCollectionChangedますか?

どうもありがとうございました。

4

2 に答える 2

3

とにかくバッキングフィールドを使用して、List OnCollectionChangedを処理する必要がありますか?

正しく行うには:はい。

関連するプロパティが変更された場合、すべてのイベントを発生させるのはソース次第です。ここでの主な問題は、IsSame実際にいつ変化するか(つまり、1から0または0から1になるか)を検出することです。バッキングフィールドが必要であるか、必要とされるよりも頻繁にイベントを発生させます。

于 2012-07-31T07:19:45.650 に答える
1

変更を収集するたびに、OnPropertyChanged("IsSame"); を呼び出す必要があります。- それは正しい。ただし、いつ呼び出すかはビューモデルのロジックによって異なります。

編集: Add および Remove コマンドがあると仮定すると、OnPropertyChanged("IsSame"); を呼び出す必要があります。これらのメソッド内。

于 2012-07-31T07:05:52.873 に答える