private void CycleBlades()
        {
            ActiveBlades = new ObservableCollection <BladeItem>();
            foreach (var item in Items)
            {
                BladeItem blade = GetBladeItem(item);
                if (blade != null)
                {
                    if (blade.IsOpen)
                    {
                        ActiveBlades.Add(blade);
                    }
                }
            }

            // For now we skip this feature when blade mode is set to fullscreen
            if (AutoCollapseCountThreshold > 0 && BladeMode != BladeMode.Fullscreen && ActiveBlades.Any())
            {
                var openBlades = ActiveBlades.Where(item => item.TitleBarVisibility == Visibility.Visible).ToList();
                if (openBlades.Count > AutoCollapseCountThreshold)
                {
                    for (int i = 0; i < openBlades.Count - 1; i++)
                    {
                        openBlades[i].IsExpanded = false;
                    }
                }
            }
        }
        private static void IsOpenChangedCallback(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs dependencyPropertyChangedEventArgs)
        {
            BladeItem bladeItem = (BladeItem)dependencyObject;

            bladeItem.Visibility = bladeItem.IsOpen ? Visibility.Visible : Visibility.Collapsed;
            bladeItem.VisibilityChanged?.Invoke(bladeItem, bladeItem.Visibility);
        }
        private static void OnTitleChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            BladeItem bladeItem = (BladeItem)d;

#pragma warning disable CS0618 // Type or member is obsolete
            bladeItem.Header = bladeItem.Title;
#pragma warning restore CS0618 // Type or member is obsolete
        }
        private BladeItem GetBladeItem(object item)
        {
            BladeItem blade = item as BladeItem;

            if (blade == null)
            {
                blade = (BladeItem)ContainerFromItem(item);
            }

            return(blade);
        }