Как быстро удалить элементы из TreeView (с группировкой) и без Collapse его элементов
Есть коллекция nodes типа - ObservableCollection<Node> для отображения в TreeView с группировкой по свойству Type.
public class Node
{
public string Name { get; set; }
public NodeType Type { get; set; }
}
//...
ListCollectionView nodesView = new ListCollectionView(nodes);
nodesView.GroupDescriptions.Add(new PropertyGroupDescription("Type"));
ListCollectionView groupedView = new ListCollectionView(nodesView.Groups);
GroupedNodesTreeView.ItemsSource = groupedView;
Удаление сразу нескольких найденных (searched) элементов из nodes следующим образом
foreach (Node node in searched)
{
nodes.Remove(node);
}
происходит медленно.
Каким образом можно быстро удалить элементы из TreeView? При этом можно ли сделать так, чтобы TreeView не меняло свойство IsExpanded элементов (т.е. после удаления не "сворачивало" их).
(Если заменить ObservableCollection на BatchingObservableCollection, где при завершении удаления происходит NotifyCollectionChangedAction.Reset, то TreeView все же "сворачивает" (Collapse) элементы. Происходит обновление всего TreeView)