Creating a Menu Programatically

Creating a menu in XAML has already been demonstrated on the Menu page, here we look at creating and populating a menu completely in code.

First up you need to add a reference to Liquid.Menu.dll in your project.

The (Simple) XAML

All we have in our XAML is a single Canvas:

<UserControl x:Class="MenuProgramatic.Page"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Width="400" Height="300">
    <Canvas x:Name="LayoutRoot" Background="White">

    </Canvas>
</UserControl>


The code side of things is a little more involved.  Here we create the menu which we call main, this contains 3 child items which we add to the Items collection.  Note that for Item 2 we set the Content property, this tells us the menu item has a child menu.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;

using Liquid;

namespace MenuProgramatic
{
    public partial class Page : UserControl
    {
        private Menu menu = new Menu();

        public Page()
        {
            InitializeComponent();

            CreateMenu();
        }

        private void CreateMenu()
        {
            Menu subMenu = new Menu();
            Button button = new Button() { Content = "Show" };

            button.Click += new RoutedEventHandler(button_Click);

            menu.SetValue(Canvas.LeftProperty, 50d);
            menu.SetValue(Canvas.TopProperty, 50d);
            menu.Visibility = Visibility.Collapsed;
            menu.ItemSelected += new MenuEventHandler(menu_ItemSelected);

            menu.Items.Add(new MenuItem("Menu item 1") { ID = "item1" } );
            menu.Items.Add(new MenuItem("Menu item 2") { ID = "item2", Content = subMenu });
            menu.Items.Add(new MenuItem("Menu item 3") { ID = "item3" });

            subMenu.Items.Add(new MenuItem("Item 4") { ID = "item4" });
            subMenu.Items.Add(new MenuItem("Item 5") { ID = "item5" });
            subMenu.Items.Add(new MenuItem("Item 6") { ID = "item6" });

            LayoutRoot.Children.Add(button);
            LayoutRoot.Children.Add(menu);
        }

        private void menu_ItemSelected(object sender, MenuEventArgs e)
        {
            MessageBox.Show(e.Tag.ToString() + " was selected.");
            
            menu.Visibility = Visibility.Collapsed;
        }

        private void button_Click(object sender, RoutedEventArgs e)
        {
            menu.Visibility = Visibility.Visible;
        }
    }
}


We have an event handler menu_ItemSelected for dealing with menu item selections, the property e.Tag passed in contains the ID of the selected menu item.

Creating a Menu in C#

 
 
Latest Games
Zombie Escape
Apr 19, 2016
Plays: 2,770

Zombie Escape ScreenshotDrive fast before the crazy mutant zombies get you!

6 Ratings/4.1 Average
Car Parking
Jan 16, 2016
Plays: 2,625

Car Parking ScreenshotGuide the car to its parking space in this fun Car Parking game.

1 Rating/5 Average
Trash It
Jan 11, 2016
Plays: 2,478

Trash It ScreenshotAim for the Trash Can and get the various items of Trash in the bin.

4 Ratings/5 Average
Sky Fly
Jan 11, 2016
Plays: 2,692

Sky Fly ScreenshotFly your plane in this colorful vertical scrolling shoot-em-up. Blast the bad guys and collect any bonus's they leave behind.

1 Rating/5 Average
Professor Snappy
Jan 11, 2016
Plays: 2,156

Professor Snappy ScreenshotPop as many bubbles as possible in this fun and colorful bubble popping game. The levels start off easy enough but gradually get harder!

1 Rating/5 Average
Monster Match Saga
Jan 10, 2016
Plays: 2,479

Monster Match Saga ScreenshotHere we have a bunch of monsters that need to be matched up. Look out for the bomb and spinning monsters that will cause special damage!

3 Ratings/4.6 Average
Fly Bird Fly
Jan 10, 2016
Plays: 2,304

Fly Bird Fly ScreenshotGuide your friendly Bird through the maze of pipes and other obstacles collecting the Stars in this cool arcade game inspired by the legendary Flappy Bird.

1 Rating/5 Average
Life In One
Jan 10, 2016
Plays: 2,480

Life In One ScreenshotYou are stranded on an Alien planet. Your goal is to build a space rocket and escape. Start by building units to create power and mine the metal patches. Build defenses to defend your base from the advancing Aliens and Zombies!

2 Ratings/3 Average
X Pool
Jan 02, 2016
Plays: 3,122

X Pool ScreenshotPlay Pool against the computer or battle against your friends in the online mode!

3 Ratings/3 Average
Fruit Slicer
Jan 02, 2016
Plays: 2,195

Fruit Slicer ScreenshotSlice the fruit that is thrown up onto the screen. Slice the fruit into multiple pieces for maximum points!

1 Rating/5 Average