Пример #1
0
        private void CalculateMenuItems(ICollection <INavigationMenuDescriptor> menuDescriptors, ICollection <NavigationMenuItem> menuItems)
        {
            if (menuDescriptors == null)
            {
                return;
            }

            foreach (var menuDescriptor in menuDescriptors)
            {
                var menuItem = new NavigationMenuItem {
                    DataContext = menuDescriptor
                };
                menuItem.SetBinding(NavigationMenuItem.ItemTemplateProperty, new Binding(menuDescriptor.IsRoot ? "RootItemTemplate" : "LeafItemTemplate")
                {
                    Source = this
                });
                menuItem.AddHandler(NavigationMenuItem.SelectionChangedEvent, new RoutedPropertyChangedEventHandler <bool>(OnNavigationMenuItemSelectionChanged));
                menuItems.Add(menuItem);

                if (!(menuDescriptor.Items?.Any() ?? false))
                {
                    continue;
                }

                if (menuItem.MenuItems == null)
                {
                    menuItem.MenuItems = new List <NavigationMenuItem>();
                }

                CalculateMenuItems(menuDescriptor.Items, menuItem.MenuItems);
            }
        }
Пример #2
0
        private void UnselectOldSelectedMenuItems(NavigationMenuItem selectedMenuItem)
        {
            var oldSelectedMenuItems = MenuItems.Where(item => item.MenuItems != null)
                                       .SelectMany(item => item.MenuItems)
                                       .Concat(MenuItems)
                                       .Where(item => !Equals(item, selectedMenuItem))
                                       .Where(item => item.IsSelected)
                                       .ToArray();

            foreach (var item in oldSelectedMenuItems)
            {
                if (!(item.MenuItems?.Any(subItem => subItem.Equals(selectedMenuItem)) ?? false))
                {
                    item.IsSelected = false;
                }
            }
        }
Пример #3
0
 private void SelectMenuItem(NavigationMenuItem item)
 {
     SelectedItem     = item.DataContext as INavigationMenuDescriptor;
     SelectedMenuItem = item;
     UnselectOldSelectedMenuItems(item);
 }