Esempio n. 1
0
        public static MenuItemDataBase CreateMenuData(enMenuItemType menuType, string keyName)
        {
            switch (menuType)
            {
            case enMenuItemType.Checkable:
            {
                var retVal = new MenuItemData_ShowHideControl(keyName);
                return(retVal);
            }

            case enMenuItemType.OneClick:
            {
                var retVal = new MenuItemDataBase(keyName);
                retVal.MenuItemType = menuType;
                return(retVal);
            }

            case enMenuItemType.Radio:
            {
                var retVal = new MenuItemDataBase(keyName);
                retVal.MenuItemType = menuType;
                return(retVal);
            }

            default:
                return(null);
            }
        }
Esempio n. 2
0
        public MenuItemDataBase GetMenuData(string key)
        {
            MenuItemDataBase retVal = null;

            mMenuItemDatas.TryGetValue(key, out retVal);
            return(retVal);
        }
Esempio n. 3
0
        static MenuItem[] CreateMenuItem(int deep, MenuItemDataBase menuData, ItemCollection menuItems)
        {
            if (menuData.MenuNames.Length == deep)
            {
                return(null);
            }

            var    menuFullName = menuData.MenuNames[deep];
            string menuName;
            string category;

            GetMenuNameAndCategory(menuFullName, out menuName, out category);

            foreach (var item in menuItems)
            {
                var menuItem = item as MenuItem;
                if (menuItem == null)
                {
                    continue;
                }
                if (menuItem.Header.ToString() == menuName)
                {
                    if (menuData.MenuNames.Length == (deep + 1))
                    {
                        // 菜单重名
                        break;
                    }
                    else
                    {
                        return(CreateMenuItem(deep + 1, menuData, menuItem.Items));
                    }
                }
            }

            int lastCategoryIdx = -1;
            int tempIdx         = 0;

            foreach (var item in menuItems)
            {
                var menuItem = item as MenuItem;
                if (menuItem == null)
                {
                    tempIdx++;
                    continue;
                }
                var data = menuItem.Tag as MenuItemDataBase;
                if (data == null || data.MenuNames.Length <= deep)
                {
                    tempIdx++;
                    continue;
                }
                var    menuFName = data.MenuNames[deep];
                string tempMName, tempCategory;
                GetMenuNameAndCategory(menuFName, out tempMName, out tempCategory);
                if (string.Equals(category, tempCategory))
                {
                    lastCategoryIdx = tempIdx;
                    break;
                }

                tempIdx++;
            }
            lastCategoryIdx++;

            ImageSource icon         = null;
            var         iconArrayLen = menuData.Icons.Length;

            if (iconArrayLen > 0)
            {
                if (deep >= iconArrayLen)
                {
                    icon = menuData.Icons[iconArrayLen - 1];
                }
                else
                {
                    icon = menuData.Icons[deep];
                }
            }

            if (menuData.MenuNames.Length > (deep + 1))
            {
                var resultMenuItem = new MenuItem()
                {
                    Name   = "GeneralMenu_",// + menuName,
                    Header = menuName,
                    Tag    = menuData,
                };
                ResourceLibrary.Controls.Menu.MenuAssist.SetIcon(resultMenuItem, icon);
                resultMenuItem.Style = Application.Current.MainWindow.TryFindResource(new ComponentResourceKey(typeof(ResourceLibrary.CustomResources), "MenuItem_Default")) as System.Windows.Style;
                if (lastCategoryIdx == 0 && !string.IsNullOrEmpty(category))
                {
                    menuItems.Add(new ResourceLibrary.Controls.Menu.TextSeparator()
                    {
                        Style = Application.Current.MainWindow.TryFindResource(new ComponentResourceKey(typeof(ResourceLibrary.CustomResources), "TextMenuSeparatorStyle")) as Style,
                        Text  = category,
                    });
                    menuItems.Add(resultMenuItem);
                }
                else if (lastCategoryIdx != 0 && lastCategoryIdx < menuItems.Count)
                {
                    menuItems.Insert(lastCategoryIdx, resultMenuItem);
                }
                else
                {
                    menuItems.Add(resultMenuItem);
                }
                return(CreateMenuItem(deep + 1, menuData, resultMenuItem.Items));
            }
            else
            {
                var retVal = new MenuItem[menuData.Count];
                for (int i = 0; i < menuData.Count; i++)
                {
                    var resultMenuItem = new MenuItem()
                    {
                        Header = menuName + ((menuData.Count > 1)? (i + 1).ToString() : ""),
                        Tag    = menuData,
                    };
                    resultMenuItem.Name = "GenericMenu_";// + resultMenuItem.Header;
                    ResourceLibrary.Controls.Menu.MenuAssist.SetIcon(resultMenuItem, icon);
                    resultMenuItem.Style = Application.Current.MainWindow.TryFindResource(new ComponentResourceKey(typeof(ResourceLibrary.CustomResources), "MenuItem_Default")) as System.Windows.Style;
                    if (lastCategoryIdx == 0 && !string.IsNullOrEmpty(category))
                    {
                        menuItems.Add(new ResourceLibrary.Controls.Menu.TextSeparator()
                        {
                            Style = Application.Current.MainWindow.TryFindResource(new ComponentResourceKey(typeof(ResourceLibrary.CustomResources), "TextMenuSeparatorStyle")) as Style,
                            Text  = category,
                        });
                        menuItems.Add(resultMenuItem);
                    }
                    else if (lastCategoryIdx != 0 && lastCategoryIdx < menuItems.Count)
                    {
                        menuItems.Insert(lastCategoryIdx++, resultMenuItem);
                    }
                    else
                    {
                        menuItems.Add(resultMenuItem);
                    }
                    retVal[i] = resultMenuItem;
                }
                return(retVal);
            }
        }
Esempio n. 4
0
 public void RegisterMenuItem(MenuItemDataBase menuData)
 {
     mMenuItemDatas.Add(menuData.KeyName, menuData);
 }