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 回答