HandyControl icon indicating copy to clipboard operation
HandyControl copied to clipboard

[Feature request]TabControl中的TabItem点击“关闭其它”是否可以跳过不能关闭的Tab继续关闭其它Tab?

Open LeiQiao opened this issue 2 years ago • 0 comments

在TabItem点击关闭其它,当遇到不可关闭的Tab时会停止,不会继续关闭后面的Tab,是否可以跳过这个页面继续关闭其它Tab? 在/src/Shared/HandyControl_Shared/Controls/TabControl/TabPanel.cs文件中的第398行,把return替换成continue

    internal void CloseOtherItems(TabItem currentItem)
    {
        var actualItem = currentItem != null ? ItemContainerGenerator.ItemFromContainer(currentItem) : null;

        var list = GetActualList();
        if (list == null) return;

        IsInternalAction = true;

        for (var i = 0; i < Items.Count; i++)
        {
            var item = list[i];
            if (!Equals(item, actualItem) && item != null)
            {
                var argsClosing = new CancelRoutedEventArgs(TabItem.ClosingEvent, item);

                if (ItemContainerGenerator.ContainerFromItem(item) is not TabItem tabItem) continue;

                tabItem.RaiseEvent(argsClosing);
                if (argsClosing.Cancel) return; // 把这里替换成continue

                tabItem.RaiseEvent(new RoutedEventArgs(TabItem.ClosedEvent, item));
                list.Remove(item);

                i--;
            }
        }

        SetCurrentValue(SelectedIndexProperty, Items.Count == 0 ? -1 : 0);
    }

LeiQiao avatar Apr 22 '22 04:04 LeiQiao