private void navigator_roots_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e) { T1 root; switch (e.Action) { case NotifyCollectionChangedAction.Add: root = (T1)e.NewItems[0]; OnRootAdded(root); OnAdded(root); break; case NotifyCollectionChangedAction.Remove: root = (T1)e.OldItems[0]; if (viewer.OpenedRoot == root) { viewer.Close(root); if (NavigateUpperOnRemoved) { var near = roots.ElementNear(e.OldStartingIndex); NavigateTo(near); // рядом или null } } OnRootRemoved(root); break; } }