используя предложение where в ObservableCollection - PullRequest
0 голосов
/ 03 марта 2011
   private ObservableCollection<OrganizationUnit> _Organizations = new ObservableCollection<OrganizationUnit>();
   private ObservableCollection<OrganizationUnit> _OrganizationManagement;

_OrganizationManagement = new ObservableCollection<OrganizationUnit>(_Organizations.Where(p => p.Type == "DealerGroup").ToList());
            GridOrganizationManagement.ItemsSource = _OrganizationManagement;

У меня есть основной список _Organizations Я хочу, чтобы _OrganizationManagement содержал список фильтров "DealerGroup".

Но проблема заключается в использовании вышеуказанных _Organizations и _OrganizationManagement не синхронизируются, когда после этого кода я добавляю значение в _Organizations, но он не добавляет в _OrganizationManagement то, что, как я понял, мы фильтруем с помощью new ObservableCollection, поэтому новый экземпляр передается в _OrganizationManagement

1 Ответ

1 голос
/ 03 марта 2011

Вам нужно подписаться на событие CollectionChanged _Organizations и обновить _OrganizationManagement.Чтобы сохранить привязки, используйте что-то вроде этого:

private ObservableCollection<OrganizationUnit> _Organizations = new ObservableCollection<OrganizationUnit>();
private ObservableCollection<OrganizationUnit> _OrganizationManagement;

GridOrganizationManagement.ItemsSource = _OrganizationManagement;

_Organisations.CollectionChanged += (s,e) =>
{
    var newlist = new ObservableCollection<OrganizationUnit>(_Organizations.Where(p => p.Type == "DealerGroup").ToList());
    _OrganizationManagement.Clear();
    foreach(var o in newlist)
        _OrganizationManagement.Add(o);
}
...