Насколько мне известно, изменение типа для Items
на ObservableCollection<T>
не решит проблему. Вам необходимо реализовать INotifyPropertyChanged
.
Я протестировал оба решения для своего дерева, потому что столкнулся с одной и той же проблемой.
В моем случае изменение типа с IList на ObservableCollection не обновило графический интерфейс. Однако, когда я изменил свое свойство auto:
public List<SourceControlItemViewBaseModel> Items { get; set; }
до
private IEnumerable<SourceControlItemViewBaseModel> _items;
public IEnumerable<SourceControlItemViewBaseModel> Items
{
get { return _items; }
set
{
_items = value;
OnPropertyChanged();
}
}
А именно, я реализовал INotifyPropertyChanged
, и это изменило ситуацию. Метод, который строит древовидную структуру, определяет фактический тип Items
как новый List<T>()
, но он работает и обновляет графический интерфейс.
Тем не менее, мое дерево было построено в чистом виде MVVM без использования кода.
Я использую
<TreeView ItemsSource="{Binding SourceControlStructureItems}" />
и в используемой модели вида:
currentVm.Items= await SourceControlRepository.Instance.BuildSourceControlStructureAsync(currentVm.ServerPath);
Это означает, что я не добавил / не удалил элементы, но перестроил подсборку Node.