0

ObservableCollection の2つのプロパティを持つクラスがあります:

Public ObservableCollection<User> Users
     { get {return this._users;}}

Public ObservableCollection<User> Admins
     { get {return new ObservableCollection<User>(Users.Where(u => u.type == 1));}}

問題は、ユーザーを変更すると、管理者ではなくユーザーのプロパティに通知されることです。助言がありますか ?

4

1 に答える 1

1

ビューで Admins にバインドすると、ユーザーの新しい ObservableCollection のコピーが取得されます。

次に、ビューモデルで Admins.Add(new User()) をコーディングすると、バインドされたものとは異なるインスタンスで動作します。

単一のインスタンスを使用するようにコードを変更する必要があります (毎回再作成する必要はありません)。

編集(例を追加):

    private ObservableCollection<User> _admins = new ObservableCollection<User>();
    public ObservableCollection<User> Admins
    {
         get
         {
             _admins.Clear();
             Users.ForEach(p => { if (p.type == 1) { _admins.Add(p); } });
             return _admins;
         }
    }

ObservableCollection のインスタンスは変更されないことに注意してください(これが解決策の鍵です)。それをクリアして、ユーザーをコレクションにリロードするだけです。

于 2012-09-26T16:27:28.023 に答える