FirstFloor.ModernUI.Windows.Controls.InheritingContextMenu.OnOpened C# (CSharp) Method

OnOpened() protected method

protected OnOpened ( RoutedEventArgs e ) : void
e System.Windows.RoutedEventArgs
return void
        protected override void OnOpened(RoutedEventArgs e) {
            InheritingContextMenu previous = null;
            if (_previouslyOpened?.TryGetTarget(out previous) == true) {
                previous.RemoveTemporary();
            }

            RemoveTemporary();
            ContextMenuAdvancement.CheckTime();

            _menus = ContextMenuAdvancement.ParentContextMenu;
            if (_menus.Count == 0) return;

            _menus = _menus.Where(x => !ReferenceEquals(x, this)).ToList();
            ContextMenuAdvancement.ParentContextMenu.Clear();

            _items = new List<List<FrameworkElement>>(_menus.Count);
            foreach (var menu in _menus) {
                _items.Add(menu.Items.OfType<FrameworkElement>().ToList());
                menu.Items.Clear();
            }

            if (OptionInsertInFront) {
                var i = 0;
                foreach (var group in _items) {
                    var any = false;
                    foreach (var item in group) {
                        Items.Insert(i++, item);
                        item.Tag = TemporaryMark;
                        any = true;
                    }

                    if (any) {
                        Items.Insert(i++, new Separator { Tag = TemporaryMark });
                    }
                }
            } else {
                foreach (var group in _items) {
                    var any = false;
                    foreach (var item in group) {
                        if (!any) {
                            Items.Add(new Separator { Tag = TemporaryMark });
                        }

                        Items.Add(item);
                        item.Tag = TemporaryMark;
                        any = true;
                    }
                }
            }

            _previouslyOpened = new WeakReference<InheritingContextMenu>(this);
            base.OnOpened(e);
        }