Ejemplo n.º 1
0
        public override void Initialize()
        {
            Icon = new PackIconMaterial
            {
                Kind = PackIconMaterialKind.HumanChild
            };
            // automatically update the DisplayName
            var binding  = _contextMenuTranslations.CreateDisplayNameBinding(this, nameof(IContextMenuTranslations.WithChildren));
            var menuItem = new MenuItem
            {
                Id = "1"
            };

            ChildNodes.Add(menuItem);

            binding.AddDisplayNameBinding(menuItem, nameof(IContextMenuTranslations.One));

            ChildNodes.Add(new MenuItem {
                Style = MenuItemStyles.Separator
            });

            menuItem = new ClickableMenuItem
            {
                Id          = "2",
                ClickAction = item => Log.Debug().WriteLine("From 2 - child {0} clicked", item.Id)
            };
            binding.AddDisplayNameBinding(menuItem, nameof(IContextMenuTranslations.Two));
            ChildNodes.Add(menuItem);

            menuItem = new MenuItem
            {
                Id = "3"
            };
            binding.AddDisplayNameBinding(menuItem, nameof(IContextMenuTranslations.Three));
            ChildNodes.Add(menuItem);
        }
Ejemplo n.º 2
0
        protected override void OnActivate()
        {
            // Prepare disposables
            _disposables?.Dispose();
            _disposables = new CompositeDisposable();

            // Remove all items, so we can build them
            Items.Clear();

            var contextMenuNameBinding = _contextMenuTranslations.CreateDisplayNameBinding(this, nameof(IContextMenuTranslations.SomeWindow));

            // Make sure the contextMenuNameBinding is disposed when this is no longer active
            _disposables.Add(contextMenuNameBinding);

            var items        = _menuItems.Select(x => x.Value).ToList();
            var fileMenuItem = new MenuItem
            {
                Id = "1_File"
            };
            var menuNameBinding = _menuTranslations.CreateDisplayNameBinding(fileMenuItem, nameof(IMenuTranslations.File));

            // Make sure the menuNameBinding is disposed when this is no longer active
            _disposables.Add(menuNameBinding);
            items.Add(fileMenuItem);

            var editMenuItem = new MenuItem
            {
                Id = "2_Edit"
            };

            menuNameBinding.AddDisplayNameBinding(editMenuItem, nameof(IMenuTranslations.Edit));
            items.Add(editMenuItem);

            var aboutMenuItem = new MenuItem
            {
                Id = "3_About"
            };

            menuNameBinding.AddDisplayNameBinding(aboutMenuItem, nameof(IMenuTranslations.About));
            items.Add(aboutMenuItem);

            items.Add(new MenuItem
            {
                Style    = MenuItemStyles.Separator,
                Id       = "Y_Separator",
                ParentId = "1_File"
            });

            var exitMenuItem = new ClickableMenuItem
            {
                Id          = "Z_Exit",
                ParentId    = "1_File",
                ClickAction = clickedMenuItem => Dapplication.Current.Shutdown()
            };

            contextMenuNameBinding.AddDisplayNameBinding(exitMenuItem, nameof(IContextMenuTranslations.Exit));
            items.Add(exitMenuItem);

            // Make sure all items are initialized
            foreach (var menuItem in items)
            {
                menuItem.Initialize();
            }
            // Add the root elements to the Items
            foreach (var item in items.CreateTree())
            {
                Items.Add(item);
            }

            base.OnActivate();
        }
Ejemplo n.º 3
0
        /// <inheritdoc />
        protected override void OnActivate()
        {
            base.OnActivate();

            // Set the title of the icon (the ToolTipText) to our IContextMenuTranslations.Title
            _contextMenuTranslations.CreateDisplayNameBinding(this, nameof(IContextMenuTranslations.Title));

            var items = new List <IMenuItem>();

            // Lazy values
            items.AddRange(_contextMenuItems.Select(lazy => lazy.Value));

            var titleItem = new MenuItem
            {
                Id    = "A_Title",
                Style = MenuItemStyles.Title,
                Icon  = new PackIconMaterial
                {
                    Kind       = PackIconMaterialKind.Television,
                    Background = Brushes.White,
                    Foreground = Brushes.Black
                }
            };

            _contextMenuTranslations.CreateDisplayNameBinding(titleItem, nameof(IContextMenuTranslations.Title));
            titleItem.ApplyIconForegroundColor(Brushes.DarkRed);
            items.Add(titleItem);
            items.Add(new MenuItem
            {
                Style = MenuItemStyles.Separator,
                Id    = "Y_Separator"
            });

            // Create an exit item
            var exitItem = new ClickableMenuItem
            {
                Id   = "Z_Exit",
                Icon = new PackIconMaterial
                {
                    Kind = PackIconMaterialKind.Close,
                    HorizontalAlignment        = HorizontalAlignment.Stretch,
                    VerticalAlignment          = VerticalAlignment.Stretch,
                    HorizontalContentAlignment = HorizontalAlignment.Stretch,
                    VerticalContentAlignment   = VerticalAlignment.Stretch
                },
                ClickAction = clickedItem => { Application.Current.Shutdown(); }
            };

            exitItem.ApplyIconForegroundColor(Brushes.DarkRed);
            _contextMenuTranslations.CreateDisplayNameBinding(exitItem, nameof(IContextMenuTranslations.Exit));
            items.Add(exitItem);

            ConfigureMenuItems(items);

            // Make sure the margin is set, do this AFTER the icon are set
            items.ApplyIconMargin(new Thickness(2, 2, 2, 2));

            SetIcon(new PackIconMaterial
            {
                Kind       = PackIconMaterialKind.Television,
                Background = WindowsVersion.IsWindows10OrLater ? Brushes.Transparent : Brushes.White,
                Foreground = WindowsVersion.IsWindows10OrLater ? Brushes.White : Brushes.Black,
            });
            Show();
        }