Vectorlight News

  • Chat App Converted to HTML and JQuery
    Sep 08, 2011

    Converted from Silverlight to HTML and Javascript/JQuery is the Vectorlight Chat App. Login using your Vectorlight password to chat using your username and avatar.

  • HTML5 iPhone,Android Big Guns Tower Defense
    Jul 02, 2011

    Big Guns has made the leap from Windows Phone 7 (XNA) to HTML5 so you can now play it on your iPhone, Android and other HTML5 compatible devices.

  • HTML5 Games - Word Poppers and Batty
    Jun 04, 2011

    As the take-up of HTML5 quickens (74% of users currently have a browser capable of HTML5 Canvas) we present two more games for both your browser and mobile.

  • Big Guns Tower Defense on Windows Phone 7
    May 06, 2011

    Coming soon to Windows Phone 7 is an XNA port of the popular Vectorlight tower defense game Super Tower Defense. Whilst retaining many of the graphical and gameplay features of the original Silverlight game.

  • Wakacube WP7 Update
    Apr 26, 2011

    Released to the Windows Phone 7 marketplace today is Version 1.1 of Wakacube the 3D physics game of skill. Included in the update are more levels (30 in total) and new mode Wakatime which generates random crate structures to keep players entertained long after the levels have been completed.

  • Home Page News

Context Menu with the Right Mouse Button Events

Introduced in Silverlight 4 are several new events, two of these MouseRightButtonDown and MouseRightButtonUp relate to the right mouse button.  With these new events it is now easy to implement a right click context menu.

Right Click Context Menus

<UserControl x:Class="RightMouseClickContextMenu.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:liquidMenu="clr-namespace:Liquid;assembly=Liquid.Menu"
    mc:Ignorable="d">
    <Canvas x:Name="LayoutRoot" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Background="White" MouseRightButtonDown="LayoutRoot_MouseRightButtonDown" MouseLeftButtonDown="LayoutRoot_MouseLeftButtonDown">
        <TextBlock Canvas.Left="50" Canvas.Top="50" Text="Click your right mouse button!" FontSize="20" />
        <liquidMenu:Menu x:Name="popupMenu" ItemSelected="MenuList_ItemSelected" Visibility="Collapsed">
            <liquidMenu:MenuItem ID="cut" Icon="images/cut.png" Text="Cut" Shortcut="Ctrl+X" />
            <liquidMenu:MenuItem ID="copy" Icon="images/copy.png" Text="Copy" Shortcut="Ctrl+C" />
            <liquidMenu:MenuItem ID="paste" Icon="images/paste.png" Text="Paste" Shortcut="Ctrl+V" />
            <liquidMenu:MenuDivider />
            <liquidMenu:MenuItem ID="new" Text="New">
                <liquidMenu:Menu>
                    <liquidMenu:MenuItem ID="pdf" Icon="images/pdf.png" Text="PDF Document" />
                    <liquidMenu:MenuItem ID="excel" Icon="images/xls.png" Text="Excel Spreadsheet" />
                    <liquidMenu:MenuItem ID="word" Icon="images/doc.png" Text="Word Document" />
                </liquidMenu:Menu>
            </liquidMenu:MenuItem>
        </liquidMenu:Menu>
    </Canvas>
</UserControl>


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 RightMouseClickContextMenu
{
    public partial class MainPage : UserControl
    {
        public MainPage()
        {
            InitializeComponent();
        }

        private void MenuList_ItemSelected(object sender, MenuEventArgs e)
        {
            switch (e.Tag.ToString())
            {
                case "cut":
                    // TODO: Cut functionality
                    break;
                case "copy":
                    // TODO: Copy functionality
                    break;
                default:
                    break;
            }
            popupMenu.Hide();
        }

        private void LayoutRoot_MouseRightButtonDown(object sender, MouseButtonEventArgs e)
        {
            Point p = e.GetPosition(this);

            Canvas.SetLeft(popupMenu, p.X);
            Canvas.SetTop(popupMenu, p.Y);
            popupMenu.Show();

            e.Handled = true;
        }

        private void LayoutRoot_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            popupMenu.Hide();
        }
    }
}


Here we are using the Liquid Popup Menu control for our context menu.  When the MouseRightButtonDown event occurs we work out the X/Y position of the mouse and position/show the context menu.

It is important to set e.Handled = true when we have finished in the event handler in order to ensure Silverlight does not show the default Silverlight Context menu.

Your Comments

johnrahn posted

Excellent tutorial on your menus and use of Liquid!



Question: How do I access the new|pdf/word/excel submenu items?  



I figured it out by trial and error:Just use "pdf" or "word" or "excel" as comparison to e.Tag.ToString().  



Seems like these SHOULD be sub-tags to the "new" menu item.



Thank you


JR


Guzikowski posted

Hi,



Is there an easy way to configure the menu items of menu based on the canvas? I have an image and certain regions will have 2 or 3 menu items, while certain menu items may have two levels. What I would like to do is generate the context menu based on an XML file or better yet a SharePoint list. Just wondering if this is feasible before I run myself ragged.



Thanks for any advice you can give on this issue,


Ed


Serge posted

Ok it' work with Icon="../images/cut.png



But about <StackPanel>


Serge posted

It's very nice RightClickMenu but I got 2 questions.


1) It's possible to use it in <StackPanel> rather <Canvas>?


2) I create a images directory in the SilverLight Project with icones.  But I cannot see those icones in my menu.  I try a lot of paths : images/cut.png, /images/cut.png, ~/images/cut.png, etc.  Nothing work.  Any Idea?



THank a lot and congradulation about your vers usuful tools in SL 4.


 

Post your Comments

Rate this: 

1 Star 2 Star 3 Star 4 Star 5 Star
13 Ratings / 3.0 Average

Tweets

Silverlight Controls

  • Rich TextBox

    Create and edit rich content with this slick and expandable Rich TextBox...

  • TreeView

    This easy to use TreeView comes with drag and drop, sorting, searching and much more...

  • Context Menu

    You too can have cool popup context menus in your Silverlight applications...

  • Resizable Dialog

    Draggable and resizable popup dialogs are what serious Silverlight developers need...

  • Spell Checker

    Real-time spell checking in Silverlight? We did it first here...