Exemple #1
0
        internal void OpenSubMenu()
        {
            if (Items.Count == 0 || IsSubmenuOpen)
            {
                return;
            }

            if (ParentMi != null)
            {
                // 关闭同级已打开的菜单
                if (Kit.IsPhoneUI && ParentMi.IsSubmenuOpen)
                {
                    // phone模式关闭上级窗口
                    ParentMi.IsSubmenuOpen = false;
                }
                else
                {
                    Mi last = ParentMi._lastSelected;
                    if (last != null && last != this)
                    {
                        last.CloseSubMenu();
                        last.IsSelected = false;
                    }
                }
                ParentMi._lastSelected = this;
            }
            else if (Kit.IsPhoneUI && Owner.IsContextMenu)
            {
                Owner.Close();
            }

            IsSelected    = true;
            IsSubmenuOpen = true;
        }
Exemple #2
0
        static void OnIsSelectedChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            Mi   item     = (Mi)d;
            bool newValue = (bool)e.NewValue;

            if (!newValue)
            {
                item.IsMouseOver = false;
                item.ChangeState(MenuItemState.Normal);
            }
            else
            {
                item.ChangeState(MenuItemState.Pressed);
            }

            if ((bool)e.OldValue)
            {
                if (item.IsSubmenuOpen)
                {
                    item.CloseSubMenu();
                }
            }

            // 冒泡处理,只处理转为选择状态的
            if (newValue)
            {
                item.Owner?.OnItemIsSelected(item);
            }
        }
Exemple #3
0
 /// <summary>
 /// 递归关闭所有子窗口
 /// </summary>
 internal void CloseSubMenu()
 {
     if (_lastSelected != null)
     {
         _lastSelected.CloseSubMenu();
         _lastSelected = null;
     }
     if (IsSubmenuOpen)
     {
         IsSubmenuOpen = false;
     }
 }