Извините - мой вопрос почти идентичен этому, но так как он не получил жизнеспособный ответ, я надеюсь, что у кого-то еще есть некоторые свежие идеи.
У меня есть WPF TreeView, который связывается с иерархией единственного типа:
public class Entity
{
public string Title { get; set; }
public ObservableCollection Children { get; set; }
}
Класс Объекта реализует INotifyPropertyChanged, но я опустил этот код для ясности.
TreeView связывается с ObservableCollection <Объект>, и каждый экземпляр Объекта выставляет ряд содержавших экземпляров Объекта через его Дочернее свойство:
Первоначально TreeView связывает как ожидалось и правильно отображает многоуровневую иерархию. Кроме того, когда членство одного из Дочерних наборов программно изменяется, изменения правильно отражаются в TreeView.
Однако изменения в членстве корневого членского уровня ObservableCollection <Объект> не отражаются в TreeView.
Любые предложения ценились бы.
Спасибо, Tim
Моя первоначальная догадка заключается в том, что у вас есть что-то вроде следующего для корневого узла:
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;
}
}