/// <summary> /// Called to inform the tab control that one of its items changed its content. /// </summary> /// <param name="container">The item that was changed.</param> internal void HandleItemContentChanged(TabItem container) { if (SelectedIndex < 0 || SelectedIndex >= Items.Count) { return; } var current = ItemContainerGenerator.ContainerFromIndex(SelectedIndex); if (current != container) { return; } UpdateTabContent(); }
/// <summary> /// Gets the next enabled and visible tab after the specified tab. /// </summary> private TabItem GetNextEnabledTabItem(Int32 start, Int32 delta) { if (delta == 0) { return(null); } var count = Items.Count; var current = (count + ((start + delta) % count)) % count; for (int i = 0; i < Items.Count; i++) { var container = ItemContainerGenerator.ContainerFromIndex(current) as TabItem; if (container != null && container.IsEnabled && container.Visibility == Visibility.Visible) { return(container); } current = (count + ((start + delta) % count)) % count; } return(null); }