WPF TreeView, связанный с ObservableCollection, не обновляющим корневые узлы

Извините - мой вопрос почти идентичен этому, но так как он не получил жизнеспособный ответ, я надеюсь, что у кого-то еще есть некоторые свежие идеи.

У меня есть WPF TreeView, который связывается с иерархией единственного типа:

public class Entity
{
    public string Title { get; set; }
    public ObservableCollection Children { get; set; }
}

Класс Объекта реализует INotifyPropertyChanged, но я опустил этот код для ясности.

TreeView связывается с ObservableCollection <Объект>, и каждый экземпляр Объекта выставляет ряд содержавших экземпляров Объекта через его Дочернее свойство:


    
        
           
        
   

Первоначально TreeView связывает как ожидалось и правильно отображает многоуровневую иерархию. Кроме того, когда членство одного из Дочерних наборов программно изменяется, изменения правильно отражаются в TreeView.

Однако изменения в членстве корневого членского уровня ObservableCollection <Объект> не отражаются в TreeView.

Любые предложения ценились бы.

Спасибо, Tim

9
задан Community 23 May 2017 в 11:51
поделиться

1 ответ

Моя первоначальная догадка заключается в том, что у вас есть что-то вроде следующего для корневого узла:

public ObservableCollection<Entity> Entities
{
    get;
    set;
}

Затем, вместо того, чтобы делать что-то [хорошее] вроде следующего:

Entities.Clear();
foreach (var item in someSetOfItems)
    Entities.Add(item);

Вы делаете что-то [плохое] вроде этого:

Entities = new ObservableCollection<Entity>(someSetOfItems);

Вы должны быть в состоянии отследить проблему, сделав поле поддержки свойства "Сущности" только для чтения :

private readonly ObservableCollection<Entity> _entities
    = new ObservableCollection<Entity>();

public ObservableCollection<Entity> Entities
{
    get
    {
        return _entities;
    }
}
21
ответ дан 4 December 2019 в 09:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: