void RowExpanding(RowClass row) //раскрываем узел { foreach (var child in row.Children) { child.IsVisible = true; } OnPropertyChanged("Display"); }
void RowCollapsing(RowClass row) //скрываем узел { foreach (var child in row.Children) { if (row.IsExpanded) { RowCollapsing(child); } child.IsVisible = false; } OnPropertyChanged("Display"); }
IEnumerable<RowClass> IterateVisible(RowClass srce, bool showAll = false) //проход по коллекции от верхнего уровня к нижнему { if (!srce.IsVisible && showAll == false ) { yield break; } yield return srce; foreach (var child in srce.Children) { foreach (var r in IterateVisible(child, showAll)) { yield return r; } } }