public static async Task GenerateSubMenuItemsAsync(IList <MenuFlyoutItemBase> Items, ContextMenuItem[] SubMenus, RoutedEventHandler ClickHandler)
        {
            foreach (ContextMenuItem SubItem in SubMenus)
            {
                if (SubItem.SubMenus.Length > 0)
                {
                    MenuFlyoutSubItem Item = new MenuFlyoutSubItem
                    {
                        Text     = SubItem.Name,
                        Tag      = SubItem,
                        MinWidth = 150,
                        MaxWidth = 350,
                        Icon     = new FontIcon
                        {
                            FontFamily = new Windows.UI.Xaml.Media.FontFamily("Segoe MDL2 Assets"),
                            Glyph      = "\uE2AC"
                        }
                    };

                    await GenerateSubMenuItemsAsync(Item.Items, SubItem.SubMenus, ClickHandler);

                    Items.Add(Item);
                }
                else
                {
                    MenuFlyoutItemWithImage FlyoutItem = new MenuFlyoutItemWithImage
                    {
                        Text     = SubItem.Name,
                        Tag      = SubItem,
                        MinWidth = 150,
                        MaxWidth = 350
                    };

                    if (SubItem.IconData.Length != 0)
                    {
                        using (MemoryStream Stream = new MemoryStream(SubItem.IconData))
                        {
                            BitmapImage Bitmap = new BitmapImage();

                            await Bitmap.SetSourceAsync(Stream.AsRandomAccessStream());

                            FlyoutItem.ImageIcon = Bitmap;
                        }
                    }
                    else
                    {
                        FlyoutItem.Icon = new FontIcon
                        {
                            FontFamily = new Windows.UI.Xaml.Media.FontFamily("Segoe MDL2 Assets"),
                            Glyph      = "\uE2AC"
                        };
                    }

                    FlyoutItem.Click += ClickHandler;

                    Items.Add(FlyoutItem);
                }
            }
        }
Exemple #2
0
        public void RightClickContextMenu_Opening(object sender, object e)
        {
            ClearSelection();
            var shiftPressed = Window.Current.CoreWindow.GetKeyState(VirtualKey.Shift).HasFlag(CoreVirtualKeyStates.Down);

            SetShellContextmenu(BaseLayoutContextFlyout, shiftPressed, false);
            var newItemMenu = (MenuFlyoutSubItem)BaseLayoutContextFlyout.Items.SingleOrDefault(x => x.Name == "NewEmptySpace");

            if (newItemMenu == null || cachedNewContextMenuEntries == null)
            {
                return;
            }
            if (!newItemMenu.Items.Any(x => (x.Tag as string) == "CreateNewFile"))
            {
                var separatorIndex = newItemMenu.Items.IndexOf(newItemMenu.Items.Single(x => x.Name == "NewMenuFileFolderSeparator"));
                foreach (var newEntry in Enumerable.Reverse(cachedNewContextMenuEntries))
                {
                    MenuFlyoutItem menuLayoutItem;
                    if (newEntry.Icon != null)
                    {
                        var image = new BitmapImage();
#pragma warning disable CS4014
                        image.SetSourceAsync(newEntry.Icon);
#pragma warning restore CS4014
                        menuLayoutItem = new MenuFlyoutItemWithImage()
                        {
                            Text       = newEntry.Name,
                            BitmapIcon = image,
                            Tag        = "CreateNewFile"
                        };
                    }
                    else
                    {
                        menuLayoutItem = new MenuFlyoutItem()
                        {
                            Text = newEntry.Name,
                            Icon = new FontIcon()
                            {
                                FontFamily = App.Current.Resources["FluentUIGlyphs"] as Windows.UI.Xaml.Media.FontFamily,
                                Glyph      = "\xea00"
                            },
                            Tag = "CreateNewFile"
                        };
                    }
                    menuLayoutItem.Command          = ParentShellPageInstance.InteractionOperations.CreateNewFile;
                    menuLayoutItem.CommandParameter = newEntry;
                    newItemMenu.Items.Insert(separatorIndex + 1, menuLayoutItem);
                }
            }
        }
Exemple #3
0
        public void RightClickContextMenu_Opening(object sender, object e)
        {
            ClearSelection();
            var shiftPressed = Window.Current.CoreWindow.GetKeyState(VirtualKey.Shift).HasFlag(CoreVirtualKeyStates.Down);

            SetShellContextmenu(BaseLayoutContextFlyout, shiftPressed, false);
            var newItemMenu = (MenuFlyoutSubItem)BaseLayoutContextFlyout.Items.SingleOrDefault(x => x.Name == "NewEmptySpace");

            if (newItemMenu == null || cachedNewContextMenuEntries == null)
            {
                return;
            }
            if (!newItemMenu.Items.Any(x => (x.Tag as string) == "CreateNewFile"))
            {
                var separatorIndex = newItemMenu.Items.IndexOf(newItemMenu.Items.Single(x => x.Name == "NewMenuFileFolderSeparator"));
                foreach (var newEntry in Enumerable.Reverse(cachedNewContextMenuEntries))
                {
                    MenuFlyoutItem menuLayoutItem;
                    if (newEntry.Icon != null)
                    {
                        var image = new BitmapImage();
#pragma warning disable CS4014
                        image.SetSourceAsync(newEntry.Icon);
#pragma warning restore CS4014
                        menuLayoutItem = new MenuFlyoutItemWithImage()
                        {
                            Text       = newEntry.Name,
                            BitmapIcon = image,
                            Tag        = "CreateNewFile"
                        };
                    }
                    else
                    {
                        menuLayoutItem = new MenuFlyoutItem()
                        {
                            Text = newEntry.Name,
                            Icon = new FontIcon()
                            {
                                Glyph = "\xE7C3"
                            },
                            Tag = "CreateNewFile"
                        };
                    }
                    menuLayoutItem.Command          = ParentShellPageInstance.InteractionOperations.CreateNewFile;
                    menuLayoutItem.CommandParameter = newEntry;
                    newItemMenu.Items.Insert(separatorIndex + 1, menuLayoutItem);
                }
            }
            var isPinned = App.SidebarPinnedController.Model.FavoriteItems.Contains(
                ParentShellPageInstance.FilesystemViewModel.WorkingDirectory);
            if (isPinned)
            {
                LoadMenuFlyoutItemByName("UnpinDirectoryFromSidebar");
                UnloadMenuFlyoutItemByName("PinDirectoryToSidebar");
            }
            else
            {
                LoadMenuFlyoutItemByName("PinDirectoryToSidebar");
                UnloadMenuFlyoutItemByName("UnpinDirectoryFromSidebar");
            }
        }