Posts: 45
Threads: 22
Joined: Mar 2021
Do you happen to have any sample code for adding a "file / edit / tools" type menu to a WPF builder block of code?
I really only need a couple items, so I don't think it's reached the complexity of creating a whole external XAML file.
It seems I can do a .Add(Menu).
Posts: 12,095
Threads: 142
Joined: Dec 2002
01-04-2022, 06:06 AM
(This post was last modified: 01-04-2022, 06:45 AM by Gintaras.)
// script "WPF menu bar.cs"
using System.Windows.Controls;
var b = new wpfBuilder("Window").WinSize(400);
b.R.Add(out Menu menu);
b.R.Add(out TextBox text1).Multiline(200);
b.R.AddOkCancel();
b.End();
_CreateMenu(menu);
if (!b.ShowDialog()) return;
void _CreateMenu(Menu menu) {
//File
var mFile = _TopItem("_File");
_Item(mFile, "_Open", o => { print.it(o.Header); });
_Separator(mFile);
_Item(mFile, "E_xit", o => { print.it(o.Header); b.Window.Close(); });
//Edit
var mEdit = _TopItem("_Edit");
_Item(mEdit, "_Paste", o => { print.it(o.Header); text1.Paste(); });
var mSubmenu = _Item(mEdit, "_Submenu");
_Item(mSubmenu, "_In submenu", o => { print.it(o.Header); });
MenuItem _Item(ItemsControl parent, string name, Action<MenuItem> click = null) {
var mi = new MenuItem { Header = name };
if(click != null) mi.Click += (sender, _)=> click(sender as MenuItem);
parent.Items.Add(mi);
return mi;
}
MenuItem _TopItem(string name) => _Item(menu, name);
void _Separator(ItemsControl parent) { parent.Items.Add(new Separator()); }
}