private void SetItemsSource(IEnumerable value) { var itemsSource = new ObservableCollection <object>(); FlatItemsSource = new FlatCollection(new ItemsSourceHierarchicalSource(value, this), itemsSource); // now setting the flat source that the ItemsControl will use SetItemsSource(itemsSource); }
/// <summary> /// Initializes a new instance of the <see cref="VirtualTreeView"/> class. /// </summary> public VirtualTreeView() { FlatItems = new FlatCollection(new ItemHierarchicalSource(HierarchicalItems), Items); HierarchicalItems.IfType <INotifyCollectionChanged>(nc => nc.CollectionChanged += OnHierarchicalItemsCollectionChanged); SelectedItems.CollectionChanged += OnSelectedItemsCollectionChanged; }