示例#1
0
        public async Task SetActivateTabAsync(ITab tab)
        {
            if (OnActiveTabChangingAsync != null)
            {
                var allowSwitching = await OnActiveTabChangingAsync(tab);

                if (!allowSwitching)
                {
                    return;
                }
            }
            if (ActiveTab != null && ActiveTab.Name == tab.Name)
            {
                return;
            }
            ActiveTabName = tab.Name;
            var eventArgs = new BChangeEventArgs <ITab>();

            eventArgs.OldValue = ActiveTab;
            eventArgs.NewValue = tab;
            ActiveTab          = tab;
            StateHasChanged();
            if (OnActiveTabChanged.HasDelegate)
            {
                await OnActiveTabChanged.InvokeAsync(eventArgs);
            }
        }
示例#2
0
 /// <summary>
 /// Sets tab to active.
 /// </summary>
 /// <param name="tab"></param>
 public async Task SetActiveAsync(XTab tab)
 {
     Active = tab;
     if (OnActiveTabChanged.HasDelegate)
     {
         await OnActiveTabChanged.InvokeAsync(tab);
     }
     await NotifyStateHasChangedAsync();
 }
示例#3
0
        internal async Task <bool> SetActivateTabAsync(BTabPanelBase tab)
        {
            if (OnActiveTabChanging.HasDelegate)
            {
                var arg = new BChangeEventArgs <BTabPanelBase>();
                arg.NewValue = tab;
                arg.OldValue = ActiveTab;
                await OnActiveTabChanging.InvokeAsync(arg);

                if (arg.DisallowChange)
                {
                    return(false);
                }
            }
            if (DataSource == null)
            {
                foreach (var tabPanel in tabPanels)
                {
                    if (tabPanel == tab)
                    {
                        tabPanel.Activate();
                        continue;
                    }
                    tabPanel.DeActivate();
                }
            }
            else
            {
                foreach (var item in DataSource)
                {
                    item.IsActive = item.Name == tab.Name;
                }
            }
            ActiveTab = tab;
            var eventArgs = new BChangeEventArgs <BTabPanelBase>();

            eventArgs.OldValue = ActiveTab;
            eventArgs.NewValue = tab;
            RequireRender      = true;
            if (OnActiveTabChanged.HasDelegate)
            {
                await OnActiveTabChanged.InvokeAsync(eventArgs);
            }
            else
            {
                StateHasChanged();
            }
            return(true);
        }
 public static void ActiveTabChanged(PanelTab tab)
 {
     OnActiveTabChanged?.Invoke(tab);
 }