protected internal void AddTabButton(TabButton tabButton) { if (tabButton == null) { throw new ArgumentNullException(nameof(tabButton), "tabButton should not be null."); } tabButtons.Add(tabButton); Add(tabButton); tabButtonGroup.Add(tabButton); tabButton.Clicked += (object sender, ClickedEventArgs e) => { int index = tabButtons.IndexOf(tabButton); if (SelectedIndex == index) { return; } SelectedIndex = index; if (TabButtonSelected != null) { TabButtonSelectedEventArgs args = new TabButtonSelectedEventArgs(SelectedIndex); TabButtonSelected(this, args); } }; if (SelectedIndex == -1) { tabButton.IsSelected = true; tabButton.SetTabButtonState(ControlState.Pressed); SelectedIndex = 0; if (TabButtonSelected != null) { TabButtonSelectedEventArgs args = new TabButtonSelectedEventArgs(SelectedIndex); TabButtonSelected(this, args); } } //TODO: To support non-unified tab button size. CalculateUnifiedTabButtonSize(); }
protected internal void AddTabButton(TabButton tabButton) { if (tabButton == null) { throw new ArgumentNullException(nameof(tabButton), "tabButton should not be null."); } tabButtons.Add(tabButton); Add(tabButton); tabButtonGroup.Add(tabButton); tabButton.Clicked += (object sender, ClickedEventArgs e) => { int index = tabButtons.IndexOf(tabButton); if (SelectedIndex == index) { return; } SelectedIndex = index; if (TabButtonSelected != null) { TabButtonSelectedEventArgs args = new TabButtonSelectedEventArgs(SelectedIndex); TabButtonSelected(this, args); } }; if (SelectedIndex == -1) { tabButton.IsSelected = true; SelectedIndex = 0; if (TabButtonSelected != null) { TabButtonSelectedEventArgs args = new TabButtonSelectedEventArgs(SelectedIndex); TabButtonSelected(this, args); } } }
protected internal void RemoveTabButton(TabButton tabButton) { if (tabButton == null) { throw new ArgumentNullException(nameof(tabButton), "tabButton should not be null."); } if (tabButtons.Contains(tabButton) == false) { throw new ArgumentException("tabButton does not exist in TabBar.", nameof(tabButton)); } int index = tabButtons.IndexOf(tabButton); TabButton selectedTabButton = tabButtons[SelectedIndex]; tabButtons.Remove(tabButton); Remove(tabButton); tabButtonGroup.Remove(tabButton); if ((index < SelectedIndex) || (tabButtons.Count == SelectedIndex)) { SelectedIndex -= 1; if (TabButtonSelected != null) { TabButtonSelectedEventArgs args = new TabButtonSelectedEventArgs(SelectedIndex); TabButtonSelected(this, args); } } if ((SelectedIndex != -1) && (selectedTabButton != tabButtons[SelectedIndex])) { tabButtons[SelectedIndex].IsSelected = true; tabButtons[SelectedIndex].SetTabButtonState(ControlState.Pressed); } //TODO: To support non-unified tab button size. CalculateUnifiedTabButtonSize(); }
protected override void SelectionHandler(SelectButton selection) { TabButton selectedTab = selection as TabButton; if (selectedTab == null) { throw new ArgumentNullException(nameof(selection), "selection should not be null."); } if (ItemGroup.Contains(selectedTab) == false) { throw new ArgumentException("selection does not exist in TabButtonGroup.", nameof(selection)); } foreach (TabButton tabButton in ItemGroup) { if ((tabButton != null) && (tabButton != selectedTab) && (selectedTab.IsEnabled == true)) { tabButton.IsSelected = false; tabButton.SetTabButtonState(ControlState.Normal); } } }