// Updates selected content private void UpdateSelectedContent() { if (base.SelectedIndex < 0) { this.SelectedContent = null; } else { BackstageTabItem selectedTabItem = this.GetSelectedTabItem(); if (selectedTabItem != null) { this.SelectedContent = selectedTabItem.Content; if (((selectedTabItem.ContentTemplate != null) || (selectedTabItem.ContentTemplateSelector != null)) || (selectedTabItem.ContentStringFormat != null)) { this.SelectedContentTemplate = selectedTabItem.ContentTemplate; this.SelectedContentTemplateSelector = selectedTabItem.ContentTemplateSelector; this.SelectedContentStringFormat = selectedTabItem.ContentStringFormat; } else { this.SelectedContentTemplate = this.ContentTemplate; this.SelectedContentTemplateSelector = this.ContentTemplateSelector; this.SelectedContentStringFormat = this.ContentStringFormat; } UpdateLayout(); } } }
// Finds next tab item private BackstageTabItem FindNextTabItem(int startIndex, int direction) { if (direction != 0) { int index = startIndex; for (int i = 0; i < base.Items.Count; i++) { index += direction; if (index >= base.Items.Count) { index = 0; } else if (index < 0) { index = base.Items.Count - 1; } BackstageTabItem item2 = base.ItemContainerGenerator.ContainerFromIndex(index) as BackstageTabItem; if (((item2 != null) && item2.IsEnabled) && (item2.Visibility == Visibility.Visible)) { return(item2); } } } return(null); }
/// <summary> /// Updates the current selection when an item in the System.Windows.Controls.Primitives.Selector has changed /// </summary> /// <param name="e">The event data.</param> protected override void OnItemsChanged(NotifyCollectionChangedEventArgs e) { base.OnItemsChanged(e); if ((e.Action == NotifyCollectionChangedAction.Remove) && (base.SelectedIndex == -1)) { int startIndex = e.OldStartingIndex + 1; if (startIndex > base.Items.Count) { startIndex = 0; } BackstageTabItem item = FindNextTabItem(startIndex, -1); if (item != null) { item.IsSelected = true; } } }
// Gets selected ribbon tab item BackstageTabItem GetSelectedTabItem() { object selectedItem = base.SelectedItem; if (selectedItem == null) { return(null); } BackstageTabItem item = selectedItem as BackstageTabItem; if (item == null) { item = FindNextTabItem(base.SelectedIndex, 1); base.SelectedItem = item; } return(item); }
// Handles IsSelected changed private static void OnIsSelectedChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { BackstageTabItem container = (BackstageTabItem)d; bool newValue = (bool)e.NewValue; if (newValue) { BackstageTabControl backstage = container.Parent as BackstageTabControl; if ((backstage != null) && (backstage.SelectedItem != container)) { if (backstage.SelectedItem is BackstageTabItem) { (backstage.SelectedItem as BackstageTabItem).IsSelected = false; } backstage.SelectedItem = container; } container.OnSelected(new RoutedEventArgs(Selector.SelectedEvent, container)); } else { container.OnUnselected(new RoutedEventArgs(Selector.UnselectedEvent, container)); } }