示例#1
0
        internal async Task OnInternalSelectAsync(SelectResultModel <TValue> item)
        {
            var args = new BChangeEventArgs <SelectResultModel <TValue> >();

            args.NewValue = item;
            args.OldValue = SelectedOption;
            if (OnChanging.HasDelegate)
            {
                await OnChanging.InvokeAsync(args);

                if (args.DisallowChange)
                {
                    return;
                }
            }

            await dropDownOption.Instance.CloseDropDownAsync(dropDownOption);

            SelectedOption = item;
            SetFieldValue(item.Key, true);
            Value = item.Key;
            if (dict != null)
            {
                dict.TryGetValue(Value, out var label);
                Label = label;
            }
            if (OnChange.HasDelegate)
            {
                await OnChange.InvokeAsync(args);
            }
            Console.WriteLine(Label);
            EnableClearButton = false;
            StateHasChanged();
        }
示例#2
0
        public async Task OnClickAsync()
        {
            if (ParentMenu != null && TopMenu.Mode == MenuMode.Horizontal)
            {
                await ParentMenu.CloseAsync();
            }
            TopMenu.ActivateItem(this);
            if (!string.IsNullOrEmpty(Route))
            {
                if (OnRouteChanging.HasDelegate)
                {
                    var arg = new BChangeEventArgs <string>();
                    arg.NewValue = Route;
                    arg.OldValue = currentRoute;
                    await OnRouteChanging.InvokeAsync(arg);

                    if (arg.DisallowChange)
                    {
                        return;
                    }
                }
                NavigationManager.NavigateTo(Route);
                NavigationManager.LocationChanged += NavigationManager_LocationChanged;
            }
        }
示例#3
0
        internal async Task <bool> TrySetValueAsync(TValue value, bool requireRefresh)
        {
            var arg = new BChangeEventArgs <TValue>()
            {
                NewValue = value,
                OldValue = SelectedValue
            };

            if (SelectedValueChanging.HasDelegate)
            {
                await SelectedValueChanging.InvokeAsync(arg);

                if (arg.DisallowChange)
                {
                    return(false);
                }
            }
            SelectedValue = value;
            SetFieldValue(SelectedValue, true);
            RequireRender = true;
            if (SelectedValueChanged.HasDelegate)
            {
                await SelectedValueChanged.InvokeAsync(value);
            }
            if (requireRefresh)
            {
                StateHasChanged();
            }
            return(true);
        }
示例#4
0
        private async Task ShowMenuAsync(BChangeEventArgs <BTabPanel> eventArg)
        {
            eventArg.DisallowChange = true;
            var rect = await menuTabPanel.Element.Dom(JSRuntime).GetBoundingClientRectAsync();

            var point = new System.Drawing.PointF(rect.X, rect.Height);
            await DialogService.ShowLayerAsync <DialogResult>(Menu, 0, new Dictionary <string, object>(), point);
        }
示例#5
0
 private async System.Threading.Tasks.Task PreventMenuSwitchAsync(BChangeEventArgs <BTabPanel> eventArg)
 {
     //if (eventArg.NewValue.Title == MenuText)
     //{
     //    await ShowMenuAsync(eventArg);
     //}
     //else if (string.IsNullOrWhiteSpace(MenuText) && eventArg.NewValue.Title == "开始")
     //{
     //    await ShowMenuAsync(eventArg);
     //}
 }
示例#6
0
        internal async Task <bool> SetActivateTabAsync(BTabPanel tab)
        {
            if (OnActiveTabChanging.HasDelegate)
            {
                var arg = new BChangeEventArgs <BTabPanel>();
                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 <BTabPanel>();

            eventArgs.OldValue = ActiveTab;
            eventArgs.NewValue = tab;
            RequireRender      = true;
            if (OnActiveTabChanged.HasDelegate)
            {
                await OnActiveTabChanged.InvokeAsync(eventArgs);
            }
            else
            {
                StateHasChanged();
            }
            return(true);
        }
示例#7
0
        protected void ChangeRadio(MouseEventArgs e)
        {
            if (IsDisabled)
            {
                return;
            }
            if (RadioGroup != null)
            {
                _ = RadioGroup.TrySetValueAsync(Value, !SelectedValueChanged.HasDelegate);
                return;
            }
            var newStatus = Status == RadioStatus.Selected ? RadioStatus.UnSelected : RadioStatus.Selected;

            if (StatusChanging.HasDelegate)
            {
                var arg = new BChangeEventArgs <RadioStatus>();
                arg.OldValue = Status;
                arg.NewValue = newStatus;
                StatusChanging.InvokeAsync(arg).Wait();
                if (arg.DisallowChange)
                {
                    return;
                }
            }


            if (newStatus == RadioStatus.Selected && !TypeHelper.Equal(SelectedValue, Value))
            {
                SelectedValue = Value;
            }

            if (RadioGroup == null)
            {
                SetFieldValue(SelectedValue, true);
            }
            if (StatusChanged.HasDelegate)
            {
                _ = StatusChanged.InvokeAsync(newStatus);
            }
            if (SelectedValueChanged.HasDelegate)
            {
                _ = SelectedValueChanged.InvokeAsync(SelectedValue);
            }
        }