Code: Select all
public IEnumerable<IMenuItem> Commands { get; }
edit: and for that matter, where do you handle the commands?
Code: Select all
public IEnumerable<IMenuItem> Commands { get; }
Code: Select all
public IEnumerable<IMenuItem> Commands
{
get
{
yield return new MenuItemVM() { Text = "Hello" };
yield return new MenuItemVM() { IsSeparator = true };
yield return new MenuItemVM()
{
Text = "About...",
Command = new SimpleCommand()
{
CanExecuteDelegate = p => true,
ExecuteDelegate = p => MessageBox.Show("About")
}
};
}
}
Code: Select all
...
yield return new MenuItemVM()
{
Text = "Submenu",
Children = new[]
{
new MenuItemVM() { Text = "Child 1" },
new MenuItemVM() { Text = "Child 2" }
}
};
yield return new MenuItemVM() { Text = "Label", IsLabel = true };
yield return new MenuItemVM()
{
Text = "Checkable",
Children = new[]
{
new MenuItemVM() { Text = "Child 1", IsCheckable = true, StaysOpenOnClick = true },
new MenuItemVM() { Text = "Child 2", IsCheckable = true, StaysOpenOnClick = true },
new MenuItemVM() { Text = "Child 3", IsCheckable = true, StaysOpenOnClick = true }
}
};
var g = new MenuItemVM.Group();
yield return new MenuItemVM()
{
Text = "CheckGroup",
Children = Enumerable.Range(1, 5).Select(i => new MenuItemVM()
{
Text = "Child " + i,
IsCheckable = true,
CheckGroup = g,
StaysOpenOnClick = true,
IsChecked = i == checkedItem,
CommandParameter = i,
Command = new SimpleCommand()
{
CanExecuteDelegate = p => true,
ExecuteDelegate = p => checkedItem = (int)p
}
})
};