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); }
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(); }
/// <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(); }