示例#1
0
        /// <summary>
        /// Create tab header item container
        /// </summary>
        private View CreateItemFromTabView(TabItem tabItem)
        {
            if (tabItem.HeaderTemplate == null && tabItem.Header == null)
            {
                throw new Exception("TabBar.CreateItemContainer: TabItem HeaderTemplate is null and Header is null or not type of View");
            }

            IToggable item = null;

            // Create container from TabItem.HeaderTemplate
            if (tabItem.Header != null && tabItem.Header is View)
            {
                item = tabItem.Header as IToggable;
            }
            else
            {
                View header = tabItem.HeaderTemplate.CreateContent() as View;

                Binding bind = new Binding("Header");
                bind.Source = tabItem;
                header.SetBinding(View.BindingContextProperty, bind);

                item = header as IToggable;
            }

            if (item == null)
            {
                throw new Exception("TabBar.CreateItem: ItemTemplate is not subclass of ToggleButton");
            }

            item.IsToggledChanged -= OnIsToggledChanged;
            item.IsToggledChanged += OnIsToggledChanged;

            return(item as View);
        }
示例#2
0
 /// <summary>
 /// Toggle without event raise
 /// </summary>
 private void Toggle(IToggable toggleButton)
 {
     if (toggleButton.IsToggled == false)
     {
         toggleButton.IsToggledChanged -= OnIsToggledChanged;
         toggleButton.IsToggled         = true;
         toggleButton.IsToggledChanged += OnIsToggledChanged;
     }
 }
示例#3
0
 /// <summary>
 /// Untoggle without event raise
 /// </summary>
 private void UnToggle(IToggable toggleButton)
 {
     if (toggleButton.IsToggled)
     {
         toggleButton.IsToggledChanged -= OnIsToggledChanged;
         toggleButton.IsToggled         = false;
         toggleButton.IsToggledChanged += OnIsToggledChanged;
     }
 }
示例#4
0
        /// <summary>
        /// Event handler when focused index changes in Source. Update togglebutton.
        /// </summary>
        private void OnCurrentItemIndexChanged(object sender, int index)
        {
            IToggable focusedToggleButton = _children[index].Child as IToggable;

            if (_currentToggledButton != null && _currentToggledButton != focusedToggleButton)
            {
                UnToggle(_currentToggledButton);
            }

            if (focusedToggleButton != _currentToggledButton)
            {
                _currentToggledButton = focusedToggleButton;
                Toggle(focusedToggleButton);
            }
        }