private void Tabs_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e) { if (e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Reset) { CurrentItem = null; } if (e.OldItems != null) { foreach (var item in e.OldItems.OfType <TabItem>()) { if (CurrentItem == item) { CurrentItem = null; if (e.OldStartingIndex > 0) { int i = e.OldStartingIndex; while (i > 0) { CurrentItem = Tabs[--i]; } } else if (Tabs.Count > 0) { CurrentItem = VisibleTabs.FirstOrDefault(); } } item.Parent = null; UnregisterTabItem(item); } } if (e.NewItems != null) { foreach (var item in e.NewItems.OfType <TabItem>()) { item.Parent = this; if (CurrentItem == null && (item.IsCurrentItem == true || item.Visibility == Visibility.Visible)) { CurrentItem = item; } RegisterTabItem(item); } } UpdateVisibilityState(); }
private bool IsVisibleTab(string id) { return(VisibleTabs != null && VisibleTabs.Contains(id, StringComparer.OrdinalIgnoreCase)); }