private void MenuItemCommandAction(object parameter)
        {
            BurgerMenuItem item = parameter as BurgerMenuItem;

            if (item != null)
            {
                App.AppLogger.Logger.Log(devoctomy.DFramework.Logging.Interfaces.LoggerMessageType.VerboseHigh | devoctomy.DFramework.Logging.Interfaces.LoggerMessageType.Information, "Burger menu item clicked '{0}'.", item.Key);

                //determine what type this type is before performing any actions
                if (item.GetType() == typeof(BurgerMenuViewItem))
                {
                    App.Controller.NavigateTo(item.Key);
                }
                else if (item.GetType() == typeof(BurgerMenuPopupViewItem))
                {
                    App.Controller.ShowPopup(item.Key);
                }
                else if (item.GetType() == typeof(BurgerMenuCommandItem))
                {
                    BurgerMenuCommandItem commandItem      = item as BurgerMenuCommandItem;
                    BurgerMenuViewItem    selectedViewItem = SelectedItem as BurgerMenuViewItem;
                    View viewInstance = selectedViewItem.PageViewInstance;
                    commandItem.Invoke(viewInstance.BindingContext, new object[] { null });
                }
                IsMenuExpanded = false;
            }
        }
        public void Setup(List <BurgerMenuViewItem> rootItems,
                          string startItemKey,
                          List <BurgerMenuViewItem> commonItems)
        {
            App.AppLogger.Logger.Log(devoctomy.DFramework.Logging.Interfaces.LoggerMessageType.VerboseHigh | devoctomy.DFramework.Logging.Interfaces.LoggerMessageType.Information, "Setting up burger menu.");

            if (rootItems == null || rootItems.Count == 0)
            {
                throw new ArgumentException("Argument must not be null or empty.", "rootItems");
            }
            if (string.IsNullOrEmpty(startItemKey))
            {
                throw new ArgumentException("Argument must not be null.", "startItemKey");
            }
            _menuItemsByKey.Clear();
            _startItem = rootItems.Where(bmi => bmi.Key == startItemKey).First();
            foreach (BurgerMenuViewItem curViewItem in rootItems)
            {
                AttachMenuItem(curViewItem);
            }
            _commonItems.Clear();
            if (commonItems != null && commonItems.Count > 0)
            {
                foreach (BurgerMenuViewItem curViewItem in commonItems)
                {
                    AttachMenuItem(curViewItem);
                    _commonItems.Add(curViewItem);
                }
            }
        }
示例#3
0
 public BurgerMenuCommandItem(string key,
                              string menuTitle,
                              CachyFont.Glyph glyph,
                              BurgerMenuViewItem parentViewItem,
                              string methodName) :
     base(key, menuTitle, glyph, true)
 {
     _parentViewItem = parentViewItem;
     _methodName     = methodName;
 }
        public void SelectItem(BurgerMenuViewItem item)
        {
            App.AppLogger.Logger.Log(devoctomy.DFramework.Logging.Interfaces.LoggerMessageType.VerboseHigh | devoctomy.DFramework.Logging.Interfaces.LoggerMessageType.Information, "Selecting burger menu item '{0}'.", item.Key);

            _selectedItem = item;
            UpdateMenuButtonModes();
            OnPropertyChanged("SelectedItem");
            OnPropertyChanged("VisibleSelectedItemChildItems");
            OnPropertyChanged("CommonItems");
            SetCommonItemEnables();
            ShowPopup = false;
        }
示例#5
0
        public BurgerMenuViewItem AddChildViewItem(string key,
                                                   string menuTitle,
                                                   CachyFont.Glyph glyph,
                                                   string pageTitle,
                                                   Type pageViewType,
                                                   bool clearInstanceOnNavigate)
        {
            BurgerMenuViewItem viewItem = new BurgerMenuViewItem(string.Format("{0}.{1}", Key, key),
                                                                 menuTitle,
                                                                 glyph,
                                                                 pageTitle,
                                                                 pageViewType,
                                                                 clearInstanceOnNavigate);

            ChildItems.Add(viewItem);
            return(viewItem);
        }
        public void DisplayPage(string key,
                                out BurgerMenuViewItem item)
        {
            App.AppLogger.Logger.Log(devoctomy.DFramework.Logging.Interfaces.LoggerMessageType.VerboseHigh | devoctomy.DFramework.Logging.Interfaces.LoggerMessageType.Information, "Displaying burger menu page '{0}'.", key);

            item = null;
            if (_menuItemsByKey.ContainsKey(key))
            {
                item = _menuItemsByKey[key] as BurgerMenuViewItem;
                if (item != null)
                {
                    _popups.Clear();
                    SelectItem(item);
                }
                else
                {
                    throw new InvalidOperationException(String.Format("Cannot display page '{0}' as it is of the wrong type.", key));
                }
            }
            else
            {
                throw new KeyNotFoundException(String.Format("Burger menu item with the key '{0}' was not found.", key));
            }
        }
示例#7
0
 public BurgerMenuViewItem AddChildViewItem(BurgerMenuViewItem item)
 {
     ChildItems.Add(item);
     return(item);
 }