private void CreateTabButtons(IEnumerable <TabPage> tabPages) { TabButtons.Children.Clear(); _buttonPageLinks.Clear(); foreach (TabPage curPage in tabPages) { TabButton tabButton = new TabButton(); tabButton.ButtonBorderColour = ButtonBorderColour; tabButton.Text = curPage.TabTitle; tabButton.ButtonGroup = _id; tabButton.Pressed += TabButton_Pressed; _buttonPageLinks.Add(tabButton, curPage); TabButtons.Children.Add(tabButton); } }
private static void ButtonGroupChanged(BindableObject bindable, object oldValue, object newValue) { TabButton tabButton = (TabButton)bindable; String oldGroup = (String)oldValue; String newGroup = (String)newValue; if (!String.IsNullOrEmpty(oldGroup)) { RemoveFromGroup(tabButton, oldGroup); } if (!String.IsNullOrEmpty(newGroup)) { AddToGroup(tabButton, newGroup); } }
private static void AddToGroup(TabButton button, String group) { DLoggerManager.Instance.Logger.Log(devoctomy.DFramework.Logging.Interfaces.LoggerMessageType.VerboseHigh | devoctomy.DFramework.Logging.Interfaces.LoggerMessageType.Information, "Adding tab button '{0}' to group '{1}'.", button.Text, group); List <TabButton> groupButtons = null; if (_buttonGroups.ContainsKey(group)) { groupButtons = _buttonGroups[group]; } else { groupButtons = new List <TabButton>(); _buttonGroups.Add(group, groupButtons); } groupButtons.Add(button); }
private static void UnpressAllInGroupExcept(String group, TabButton except) { DLoggerManager.Instance.Logger.Log(devoctomy.DFramework.Logging.Interfaces.LoggerMessageType.VerboseHigh | devoctomy.DFramework.Logging.Interfaces.LoggerMessageType.Information, "Unpressing all tab buttons in group '{0}', except '{1}'.", group, except.Text); List <TabButton> groupButtons = null; if (_buttonGroups.ContainsKey(group)) { groupButtons = _buttonGroups[group]; foreach (TabButton curButton in groupButtons) { if (curButton != except) { curButton._isUpdating = true; curButton.IsPressed = false; curButton._isUpdating = false; } } } }
private static void IsPressedChanged(BindableObject bindable, object oldValue, object newValue) { TabButton tabButton = (TabButton)bindable; Boolean isPressed = (Boolean)newValue; tabButton.ButtonBorder.BorderThickness = isPressed ? "0,0,0,8" : "0"; tabButton.ButtonLabel.FontAttributes = isPressed ? tabButton.ButtonLabel.FontAttributes | FontAttributes.Bold : tabButton.ButtonLabel.FontAttributes & ~FontAttributes.Bold; if (!tabButton._isUpdating && !String.IsNullOrEmpty(tabButton.ButtonGroup)) { UnpressAllInGroupExcept(tabButton.ButtonGroup, tabButton); } if (isPressed) { tabButton.Pressed?.Invoke(tabButton, EventArgs.Empty); } else { tabButton.Unpressed?.Invoke(tabButton, EventArgs.Empty); } }