我有一个具有ObservableCollection的两个属性的类:
Public ObservableCollection<User> Users
{ get {return this._users;}}
Public ObservableCollection<User> Admins
{ get {return new ObservableCollection<User>(Users.Where(u => u.type == 1));}}
问题是当我更改用户时,属性用户会收到通知,而不是管理员。 有什么建议吗?
答案 0 :(得分:1)
如果您绑定到视图中的管理员,它将获得一个新的用户ObservableCollection的副本。
如果您在viewmodel中对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的实例不会更改(这是解决方案的关键)。我只需清除它并将用户重新加载到集合中。