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.
You need to login to Download the Programatic Menu example, If you do not have a login you can register for free!
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.

Rate this page:
1 Star
2 Star
3 Star
4 Star
5 Star
20 Ratings / 2.3 Average