<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="/rss.xsl"?><rss version="2.0"><channel><title>SL4PopupMenu Wiki Rss Feed</title><link>http://sl4popupmenu.codeplex.com/wikipage</link><description>SL4PopupMenu Wiki Rss Description</description><item><title>Updated Wiki: Documentation</title><link>http://sl4popupmenu.codeplex.com/documentation?version=19</link><description>&lt;div class="wikidoc"&gt;
&lt;p&gt;&lt;strong&gt;The documentation file for this project is available&amp;nbsp;&lt;a href="http://sl4popupmenu.codeplex.com/releases/view/69682"&gt;here&lt;/a&gt; .&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Below is the class diagram for all project classes from the &lt;a href="http://sl4popupmenu.codeplex.com/SourceControl/list/changesets"&gt;
latest changeset&lt;/a&gt;.&lt;/strong&gt;&lt;br&gt;
&lt;br&gt;
&lt;img src="http://xs.to/media/45118" alt=""&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id="_mcePaste" style="width:1px; height:1px; overflow:hidden; top:0px; left:-10000px"&gt;
&amp;#65279;&lt;/div&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>ZiadJ</author><pubDate>Sat, 23 Jul 2011 01:37:03 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Documentation 20110723013703A</guid></item><item><title>Updated Wiki: Documentation</title><link>http://sl4popupmenu.codeplex.com/documentation?version=18</link><description>&lt;div class="wikidoc"&gt;
&lt;p&gt;&lt;strong&gt;The documentation file for this project is available&amp;nbsp;&lt;a href="http://sl4popupmenu.codeplex.com/SourceControl/list/changesets"&gt;here&lt;/a&gt; .&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Below is the class diagram for all project classes from the &lt;a href="http://sl4popupmenu.codeplex.com/SourceControl/list/changesets"&gt;
latest changeset&lt;/a&gt;.&lt;/strong&gt;&lt;br&gt;
&lt;br&gt;
&lt;img src="http://xs.to/media/45118" alt=""&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id="_mcePaste" style="width:1px; height:1px; overflow:hidden; top:0px; left:-10000px"&gt;
&amp;#65279;&lt;/div&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>ZiadJ</author><pubDate>Sat, 23 Jul 2011 01:36:09 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Documentation 20110723013609A</guid></item><item><title>Updated Wiki: Documentation</title><link>http://sl4popupmenu.codeplex.com/documentation?version=17</link><description>&lt;div class="wikidoc"&gt;
&lt;p&gt;&lt;strong&gt;The documentation file for this project is available&amp;nbsp;&lt;a href="http://sl4popupmenu.codeplex.com/releases/69682/download/256415"&gt;here&lt;/a&gt; .&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Below is the class diagram for all project classes from the &lt;a href="http://sl4popupmenu.codeplex.com/SourceControl/list/changesets"&gt;
latest changeset&lt;/a&gt;.&lt;/strong&gt;&lt;br&gt;
&lt;br&gt;
&lt;img src="http://xs.to/media/45118" alt=""&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id="_mcePaste" style="width:1px; height:1px; overflow:hidden; top:0px; left:-10000px"&gt;
&amp;#65279;&lt;/div&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>ZiadJ</author><pubDate>Sat, 23 Jul 2011 01:35:18 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Documentation 20110723013518A</guid></item><item><title>Updated Wiki: Documentation</title><link>http://sl4popupmenu.codeplex.com/documentation?version=16</link><description>&lt;div class="wikidoc"&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://sl4popupmenu.codeplex.com/releases/69682/download/256415"&gt;Click here&lt;/a&gt; to download the documentation file for this project.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Below is the class diagram for all project classes from the &lt;a href="http://sl4popupmenu.codeplex.com/SourceControl/list/changesets"&gt;
latest changeset&lt;/a&gt;.&lt;/strong&gt;&lt;br&gt;
&lt;br&gt;
&lt;img src="http://xs.to/media/45118" alt=""&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id="_mcePaste" style="width:1px; height:1px; overflow:hidden; top:0px; left:-10000px"&gt;
&amp;#65279;&lt;/div&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>ZiadJ</author><pubDate>Fri, 08 Jul 2011 15:15:16 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Documentation 20110708031516P</guid></item><item><title>Updated Wiki: Documentation</title><link>http://sl4popupmenu.codeplex.com/documentation?version=15</link><description>&lt;div class="wikidoc"&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://sl4popupmenu.codeplex.com/releases/69682/download/256415"&gt;Click here&lt;/a&gt; to download the documentation file for this project.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Below is the class diagram for all project classes from the &lt;a href="http://sl4popupmenu.codeplex.com/SourceControl/list/changesets"&gt;
latest changeset&lt;/a&gt;.&lt;/strong&gt;&lt;br&gt;
&lt;br&gt;
&lt;img src="http://imageshack.us/photo/my-images/830/popupmenuclassdiagram.png" alt=""&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id="_mcePaste" style="width:1px; height:1px; overflow:hidden; top:0px; left:-10000px"&gt;
&amp;#65279;&lt;/div&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>ZiadJ</author><pubDate>Fri, 08 Jul 2011 14:57:55 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Documentation 20110708025755P</guid></item><item><title>Updated Wiki: Documentation</title><link>http://sl4popupmenu.codeplex.com/documentation?version=14</link><description>&lt;div class="wikidoc"&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://sl4popupmenu.codeplex.com/releases/69682/download/256415"&gt;Click here&lt;/a&gt; to download the documentation file for this project.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Below is the class diagram for all project classes from the &lt;a href="http://sl4popupmenu.codeplex.com/SourceControl/list/changesets"&gt;
latest changeset&lt;/a&gt;.&lt;/strong&gt;&lt;br&gt;
&lt;br&gt;
&lt;img src="http://img839.imageshack.us/img839/6846/popupmenuclassdiagram.png" alt=""&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id="_mcePaste" style="width:1px; height:1px; overflow:hidden; top:0px; left:-10000px"&gt;
&amp;#65279;&lt;/div&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>ZiadJ</author><pubDate>Fri, 08 Jul 2011 14:53:55 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Documentation 20110708025355P</guid></item><item><title>Updated Wiki: Documentation</title><link>http://sl4popupmenu.codeplex.com/documentation?version=13</link><description>&lt;div class="wikidoc"&gt;
&lt;p&gt;&lt;strong&gt;Below is the class diagram for all project classes from the &lt;a href="http://sl4popupmenu.codeplex.com/SourceControl/list/changesets"&gt;
latest changeset&lt;/a&gt;.&lt;/strong&gt;&lt;br&gt;
&lt;br&gt;
&lt;img src="http://img839.imageshack.us/img839/6846/popupmenuclassdiagram.png" alt=""&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id="_mcePaste" style="width:1px; height:1px; overflow:hidden; top:0px; left:-10000px"&gt;
&amp;#65279;&lt;/div&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>ZiadJ</author><pubDate>Fri, 08 Jul 2011 14:51:05 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Documentation 20110708025105P</guid></item><item><title>Updated Wiki: Documentation</title><link>http://sl4popupmenu.codeplex.com/documentation?version=12</link><description>&lt;div class="wikidoc"&gt;
&lt;p&gt;&lt;strong&gt;Below is the class diagram for all project classes from the &lt;a href="http://sl4popupmenu.codeplex.com/SourceControl/list/changesets"&gt;
latest changeset&lt;/a&gt;.&lt;/strong&gt;&lt;br&gt;
&lt;br&gt;
&lt;img src="http://img839.imageshack.us/img839/6846/popupmenuclassdiagram.png" alt=""&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id="_mcePaste" style="width:1px; height:1px; overflow:hidden; top:0px; left:-10000px"&gt;
&amp;#65279;&lt;/div&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>ZiadJ</author><pubDate>Fri, 08 Jul 2011 14:47:59 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Documentation 20110708024759P</guid></item><item><title>Updated Wiki: Documentation</title><link>http://sl4popupmenu.codeplex.com/documentation?version=11</link><description>&lt;div class="wikidoc"&gt;
&lt;p&gt;&lt;strong&gt;Below is the class diagram for all project classes from the &lt;a href="http://sl4popupmenu.codeplex.com/SourceControl/list/changesets"&gt;
latest changeset&lt;/a&gt;.&lt;/strong&gt;&lt;br&gt;
&lt;br&gt;
&lt;img src="http://img839.imageshack.us/img839/6846/popupmenuclassdiagram.png" alt=""&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id="_mcePaste" style="width:1px; height:1px; overflow:hidden; top:0px; left:-10000px"&gt;
&amp;#65279;&lt;/div&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>ZiadJ</author><pubDate>Thu, 19 May 2011 18:25:44 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Documentation 20110519062544P</guid></item><item><title>Updated Wiki: Documentation</title><link>http://sl4popupmenu.codeplex.com/documentation?version=10</link><description>&lt;div class="wikidoc"&gt;
&lt;p&gt;&lt;strong&gt;Below is the class diagram for all project classes according to the &lt;a href="http://sl4popupmenu.codeplex.com/SourceControl/list/changesets"&gt;
latest changeset&lt;/a&gt;.&lt;/strong&gt;&lt;br&gt;
&lt;br&gt;
&lt;img src="http://img839.imageshack.us/img839/6846/popupmenuclassdiagram.png" alt=""&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id="_mcePaste" style="width:1px; height:1px; overflow:hidden; top:0px; left:-10000px"&gt;
&amp;#65279;&lt;/div&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>ZiadJ</author><pubDate>Thu, 19 May 2011 18:24:49 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Documentation 20110519062449P</guid></item><item><title>Updated Wiki: Home</title><link>http://sl4popupmenu.codeplex.com/wikipage?version=40</link><description>&lt;div class="wikidoc"&gt;
&lt;p&gt;&lt;strong&gt;Context menu and hierachical menu for Silverlight 4.0&lt;/strong&gt; &lt;br&gt;
&lt;br&gt;
This project started out after I found nothing in the Silverlight open source community that would allow me to use the popup control in a straightforward manner. It is now a fully fledged multilevel menu with support for templating, commanding and many other
 goodies. I tried to make it as flexible as possible to answer the needs of most Silverlight developers out there while keeping it under 30K(zipped).&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.pikatoo.com/SL4PopupMenu/Default.aspx#/Views/Demo2.xaml"&gt;&lt;strong&gt;Click here&lt;/strong&gt;&lt;/a&gt; to view a demo on the general capabilities of the control in handling shortcut, access keys(try Ctrl&amp;#43;Alt&amp;#43;M), left click, right click and hover events.&lt;/p&gt;
&lt;p&gt;In short here is what you get:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Nested Menus &lt;/li&gt;&lt;li&gt;Pinnable Menus &lt;/li&gt;&lt;li&gt;Boundary Detection &lt;/li&gt;&lt;li&gt;Animations &lt;/li&gt;&lt;li&gt;Keyboard Navigation &lt;/li&gt;&lt;li&gt;Shortcuts and Access Keys &lt;/li&gt;&lt;li&gt;&lt;span&gt;Data Binding&lt;/span&gt; &lt;/li&gt;&lt;li&gt;Command Support &lt;/li&gt;&lt;li&gt;Vertical Menu Orientation &lt;/li&gt;&lt;li&gt;Context Menu &lt;/li&gt;&lt;li&gt;Styling &lt;/li&gt;&lt;li&gt;Use Existing Themes &lt;/li&gt;&lt;li&gt;Scrollable &lt;/li&gt;&lt;li&gt;Three State Checkbox &lt;/li&gt;&lt;li&gt;Item Template &lt;/li&gt;&lt;li&gt;Reusability &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Just put an ItemsControl such as a ListBox inside it, specify the name(s) of the trigger control(s) and your menu is ready to fly when you left click, right click or hover the latter.
&lt;/p&gt;
&lt;p&gt;Any derivative a the ItemsControl like the Treeview can be used as template. However when no control is specified an auto-generated ListBox is used by default.
&lt;br&gt;
In the example below a menu consisting of a few menu items and a submenu will popup when the shortcut Ctrl&amp;#43;Alt&amp;#43;M is pressed or when Button1 is right or left clicked:&lt;/p&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;    &amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Button&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Button1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;50&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenu&lt;/span&gt; &lt;span class="attr"&gt;RightClickElements&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Button1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;LeftClickElements&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Button1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;AccessShortcut&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Ctrl&amp;#43;Alt&amp;#43;M&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ListBox&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuItem&lt;/span&gt; &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Menu1&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuSeparator&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuItem&lt;/span&gt; &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;SubMenuHeader1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;ImageRightSource&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;images/arrow.png&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenu&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ListBox&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuItem&lt;/span&gt; &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;SubMenu1&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
                    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ListBox&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenu&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuItem&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuItem&lt;/span&gt; &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Menu2&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuItem&lt;/span&gt; &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Menu3&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ListBox&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenu&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;br&gt;
&lt;p&gt;The example below however uses an XAML free approach to generate a right click menu with a submenu on a Datagrid:&lt;/p&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; GenerateDynamicDemo()
{
    &lt;span class="rem"&gt;// Add a DataGrid control with some sample data to the layout root&lt;/span&gt;
    var data = &lt;span class="kwrd"&gt;new&lt;/span&gt; ObservableCollection&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt;(&lt;span class="str"&gt;&amp;quot;Item 1,Item 2,Item 3,Item 4,Item 6,Item 7,Item 8&amp;quot;&lt;/span&gt;.Split(&lt;span class="str"&gt;','&lt;/span&gt;));
    DataGrid dataGrid1 = &lt;span class="kwrd"&gt;new&lt;/span&gt; DataGrid() { Margin = &lt;span class="kwrd"&gt;new&lt;/span&gt; Thickness(50), ItemsSource = data };
    &lt;span class="kwrd"&gt;this&lt;/span&gt;.LayoutRoot.Children.Add(dataGrid1);

    &lt;span class="rem"&gt;// Create the submenu&lt;/span&gt;
    var spmTimeNow = &lt;span class="kwrd"&gt;new&lt;/span&gt; PopupMenu();
    spmTimeNow.AddItem(&lt;span class="str"&gt;&amp;quot;Time Now&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;null&lt;/span&gt;);
    &lt;span class="rem"&gt;// Create the main menu&lt;/span&gt;
    var pm1 = &lt;span class="kwrd"&gt;new&lt;/span&gt; PopupMenu { AccessShortcut = &lt;span class="str"&gt;&amp;quot;Ctrl&amp;#43;Alt&amp;#43;M&amp;quot;&lt;/span&gt;, OpenOnAccessKeyPressed = &lt;span class="kwrd"&gt;true&lt;/span&gt; };

    &lt;span class="rem"&gt;// Add the menu items&lt;/span&gt;
    pm1.AddItem(&lt;span class="str"&gt;&amp;quot;Delete row&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;delegate&lt;/span&gt; { data.RemoveAt(pm1.GetClickedElement&amp;lt;DataGridRow&amp;gt;().GetIndex()); });
    pm1.AddSeparator();
    pm1.AddSubMenu(spmTimeNow, &lt;span class="str"&gt;&amp;quot;Get Time &amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;images/arrow.png&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;null&lt;/span&gt;, &lt;span class="kwrd"&gt;null&lt;/span&gt;, &lt;span class="kwrd"&gt;false&lt;/span&gt;, &lt;span class="kwrd"&gt;null&lt;/span&gt;); &lt;span class="rem"&gt;// Attach the submenu pmTimeSub&lt;/span&gt;
    pm1.AddSeparator();
    pm1.AddItem(&lt;span class="str"&gt;&amp;quot;Demo2&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;delegate&lt;/span&gt; { App.Current.Host.NavigationState = &lt;span class="str"&gt;&amp;quot;/Views/Demo2.xaml&amp;quot;&lt;/span&gt;; });

    &lt;span class="rem"&gt;// Set dataGrid1 as the trigger element&lt;/span&gt;
    pm1.AddTrigger(TriggerTypes.RightClick, dataGrid1);

    &lt;span class="rem"&gt;// Showing main menu&lt;/span&gt;
    pm1.Showing &amp;#43;= (sender, e) =&amp;gt;
    {
        pm1.PopupMenuItem(0).Header = &lt;span class="str"&gt;&amp;quot;Delete &amp;quot;&lt;/span&gt; &amp;#43; dataGrid1.SelectedItem;
        pm1.PopupMenuItem(0).IsVisible =
        pm1.PopupMenuItem(1).IsVisible = pm1.GetClickedElement&amp;lt;DataGridRow&amp;gt;() != &lt;span class="kwrd"&gt;null&lt;/span&gt;;
    };
    &lt;span class="rem"&gt;// Showing submenu&lt;/span&gt;
    spmTimeNow.Showing &amp;#43;= &lt;span class="kwrd"&gt;delegate&lt;/span&gt;
    {
        spmTimeNow.PopupMenuItem(0).Header = DateTime.Now.ToLongTimeString();
    };
}&lt;/pre&gt;
&lt;p&gt;To see the compiled outcome &lt;a href="http://www.pikatoo.com/SL4PopupMenu/Default.aspx#/Views/Demo1.xaml"&gt;
&lt;strong&gt;click here&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you used the control and made improvements on it and would like to share it or if you got questions, comments, suggestions or critics then feel free to use my email address(hellozi at live dot com) for this purpose.
&lt;/p&gt;
&lt;p&gt;Otherwise leaving a review at the bottom would fairly do.&lt;/p&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>ZiadJ</author><pubDate>Tue, 17 May 2011 21:48:17 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20110517094817P</guid></item><item><title>Updated Wiki: Home</title><link>http://sl4popupmenu.codeplex.com/wikipage?version=39</link><description>&lt;div class="wikidoc"&gt;
&lt;p&gt;&lt;strong&gt;Context menu and hierachical menu for Silverlight 4.0&lt;/strong&gt; &lt;br&gt;
&lt;br&gt;
This project started out after I found nothing in the Silverlight open source community that would allow me to use the popup control in a straightforward manner. It is now a fully fledged multilevel menu with support for templating, commanding and many other
 goodies. I tried to make it as flexible as possible to answer the needs of most Silverlight developers out there while keeping it under 30K(zipped).&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.pikatoo.com/SL4PopupMenu/Default.aspx#/Views/Demo2.xaml"&gt;&lt;strong&gt;Click here&lt;/strong&gt;&lt;/a&gt; to view a demo on the general capabilities of the control in handling shortcut, access keys(try Ctrl&amp;#43;Alt&amp;#43;M), left click, right click and hover events.&lt;/p&gt;
&lt;p&gt;In short here is what you get:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Nested Menus &lt;/li&gt;&lt;li&gt;Pinnable Menus &lt;/li&gt;&lt;li&gt;Boundary Detection &lt;/li&gt;&lt;li&gt;Animations &lt;/li&gt;&lt;li&gt;Keyboard Navigation &lt;/li&gt;&lt;li&gt;Shortcuts and Access Keys &lt;/li&gt;&lt;li&gt;&lt;span&gt;Data Binding&lt;/span&gt; &lt;/li&gt;&lt;li&gt;Command Support &lt;/li&gt;&lt;li&gt;Vertical Menu Orientation &lt;/li&gt;&lt;li&gt;Context Menu &lt;/li&gt;&lt;li&gt;Styling &lt;/li&gt;&lt;li&gt;Use Existing Themes &lt;/li&gt;&lt;li&gt;Scrollable &lt;/li&gt;&lt;li&gt;Three State Checkbox &lt;/li&gt;&lt;li&gt;Item Template &lt;/li&gt;&lt;li&gt;Reusability &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Just put an ItemsControl such as a ListBox inside it, specify the name(s) of the trigger control(s) and your menu is ready to fly when you left click, right click or hover the latter.
&lt;/p&gt;
&lt;p&gt;Any derivative a the ItemsControl like the Treeview can be used as template. However when no control is specified an auto-generated ListBox is used by default.
&lt;br&gt;
In the example below a menu consisting of a few menu items and a submenu will popup when the shortcut Ctrl&amp;#43;Alt&amp;#43;M is pressed or when Button1 is right or left clicked:&lt;/p&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;    &amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Button&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Button1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;50&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenu&lt;/span&gt; &lt;span class="attr"&gt;RightClickElements&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Button1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;LeftClickElements&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Button1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;AccessShortcut&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Ctrl&amp;#43;Alt&amp;#43;Y&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ListBox&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuItem&lt;/span&gt; &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Menu1&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuSeparator&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuItem&lt;/span&gt; &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;SubMenuHeader1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;ImageRightSource&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;images/arrow.png&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenu&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ListBox&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuItem&lt;/span&gt; &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;SubMenu1&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
                    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ListBox&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenu&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuItem&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuItem&lt;/span&gt; &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Menu2&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuItem&lt;/span&gt; &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Menu3&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ListBox&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenu&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;br&gt;
&lt;p&gt;The example below however uses an XAML free approach to generate a right click menu with a submenu on a Datagrid:&lt;/p&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; GenerateDynamicDemo()
{
    &lt;span class="rem"&gt;// Add a DataGrid control with some sample data to the layout root&lt;/span&gt;
    var data = &lt;span class="kwrd"&gt;new&lt;/span&gt; ObservableCollection&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt;(&lt;span class="str"&gt;&amp;quot;Item 1,Item 2,Item 3,Item 4,Item 6,Item 7,Item 8&amp;quot;&lt;/span&gt;.Split(&lt;span class="str"&gt;','&lt;/span&gt;));
    DataGrid dataGrid1 = &lt;span class="kwrd"&gt;new&lt;/span&gt; DataGrid() { Margin = &lt;span class="kwrd"&gt;new&lt;/span&gt; Thickness(50), ItemsSource = data };
    &lt;span class="kwrd"&gt;this&lt;/span&gt;.LayoutRoot.Children.Add(dataGrid1);

    &lt;span class="rem"&gt;// Create the submenu&lt;/span&gt;
    var spmTimeNow = &lt;span class="kwrd"&gt;new&lt;/span&gt; PopupMenu();
    spmTimeNow.AddItem(&lt;span class="str"&gt;&amp;quot;Time Now&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;null&lt;/span&gt;);
    &lt;span class="rem"&gt;// Create the main menu&lt;/span&gt;
    var pm1 = &lt;span class="kwrd"&gt;new&lt;/span&gt; PopupMenu { AccessShortcut = &lt;span class="str"&gt;&amp;quot;Ctrl&amp;#43;Alt&amp;#43;M&amp;quot;&lt;/span&gt;, OpenOnAccessKeyPressed = &lt;span class="kwrd"&gt;true&lt;/span&gt; };

    &lt;span class="rem"&gt;// Add the menu items&lt;/span&gt;
    pm1.AddItem(&lt;span class="str"&gt;&amp;quot;Delete row&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;delegate&lt;/span&gt; { data.RemoveAt(pm1.GetClickedElement&amp;lt;DataGridRow&amp;gt;().GetIndex()); });
    pm1.AddSeparator();
    pm1.AddSubMenu(spmTimeNow, &lt;span class="str"&gt;&amp;quot;Get Time &amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;images/arrow.png&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;null&lt;/span&gt;, &lt;span class="kwrd"&gt;null&lt;/span&gt;, &lt;span class="kwrd"&gt;false&lt;/span&gt;, &lt;span class="kwrd"&gt;null&lt;/span&gt;); &lt;span class="rem"&gt;// Attach the submenu pmTimeSub&lt;/span&gt;
    pm1.AddSeparator();
    pm1.AddItem(&lt;span class="str"&gt;&amp;quot;Demo2&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;delegate&lt;/span&gt; { App.Current.Host.NavigationState = &lt;span class="str"&gt;&amp;quot;/Views/Demo2.xaml&amp;quot;&lt;/span&gt;; });

    &lt;span class="rem"&gt;// Set dataGrid1 as the trigger element&lt;/span&gt;
    pm1.AddTrigger(TriggerTypes.RightClick, dataGrid1);

    &lt;span class="rem"&gt;// Showing main menu&lt;/span&gt;
    pm1.Showing &amp;#43;= (sender, e) =&amp;gt;
    {
        pm1.PopupMenuItem(0).Header = &lt;span class="str"&gt;&amp;quot;Delete &amp;quot;&lt;/span&gt; &amp;#43; dataGrid1.SelectedItem;
        pm1.PopupMenuItem(0).IsVisible =
        pm1.PopupMenuItem(1).IsVisible = pm1.GetClickedElement&amp;lt;DataGridRow&amp;gt;() != &lt;span class="kwrd"&gt;null&lt;/span&gt;;
    };
    &lt;span class="rem"&gt;// Showing submenu&lt;/span&gt;
    spmTimeNow.Showing &amp;#43;= &lt;span class="kwrd"&gt;delegate&lt;/span&gt;
    {
        spmTimeNow.PopupMenuItem(0).Header = DateTime.Now.ToLongTimeString();
    };
}&lt;/pre&gt;
&lt;p&gt;To see the compiled outcome &lt;a href="http://www.pikatoo.com/SL4PopupMenu/Default.aspx#/Views/Demo1.xaml"&gt;
&lt;strong&gt;click here&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you used the control and made improvements on it and would like to share it or if you got questions, comments, suggestions or critics then feel free to use my email address(hellozi at live dot com) for this purpose.
&lt;/p&gt;
&lt;p&gt;Otherwise leaving a review at the bottom would fairly do.&lt;/p&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>ZiadJ</author><pubDate>Tue, 17 May 2011 21:14:38 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20110517091438P</guid></item><item><title>Updated Wiki: test</title><link>http://sl4popupmenu.codeplex.com/wikipage?title=test&amp;version=75</link><description>&lt;div class="wikidoc"&gt;
&lt;p&gt;&lt;strong&gt;Context menu and hierachical menu for Silverlight 4.0&lt;/strong&gt; &lt;br&gt;
&lt;br&gt;
This project started out after I found nothing in the Silverlight open source community that would allow me to use the popup control in a straightforward manner. It is now a fully fledged multilevel menu with support for templating, commanding and many other
 goodies. I tried to make it as flexible as possible to answer the needs of most Silverlight developers out there while keeping it under 30K(zipped).&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.pikatoo.com/SL4PopupMenu/Default.aspx#/Views/Demo2.xaml"&gt;&lt;strong&gt;Click here&lt;/strong&gt;&lt;/a&gt; to view a demo on the general capabilities of the control in handling shortcut, access keys(try Ctrl&amp;#43;Alt&amp;#43;M), left click, right click and hover events.&lt;/p&gt;
&lt;p&gt;In short here is what you get:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Nested Menus &lt;/li&gt;&lt;li&gt;Pinnable Menus &lt;/li&gt;&lt;li&gt;Boundary Detection &lt;/li&gt;&lt;li&gt;Animations &lt;/li&gt;&lt;li&gt;Keyboard Navigation &lt;/li&gt;&lt;li&gt;Shortcuts and Access Keys &lt;/li&gt;&lt;li&gt;&lt;span&gt;Data Binding&lt;/span&gt; &lt;/li&gt;&lt;li&gt;Command Support &lt;/li&gt;&lt;li&gt;Vertical Menu Orientation &lt;/li&gt;&lt;li&gt;Context Menu &lt;/li&gt;&lt;li&gt;Styling &lt;/li&gt;&lt;li&gt;Use Existing Themes &lt;/li&gt;&lt;li&gt;Scrollable &lt;/li&gt;&lt;li&gt;Three State Checkbox &lt;/li&gt;&lt;li&gt;Item Template &lt;/li&gt;&lt;li&gt;Reusability &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Just put an ItemsControl such as a ListBox inside it, specify the name(s) of the trigger control(s) and your menu is ready to fly when you left click, right click or hover the latter.
&lt;/p&gt;
&lt;p&gt;Any derivative a the ItemsControl like the Treeview can be used as template. However when no control is specified an auto-generated ListBox is used by default.
&lt;br&gt;
In the example below a menu consisting of a few menu items and a submenu will popup when the shortcut Ctrl&amp;#43;Alt&amp;#43;M is pressed or when Button1 is right or left clicked:&lt;/p&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;    &amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Button&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Button1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;50&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenu&lt;/span&gt; &lt;span class="attr"&gt;RightClickElements&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Button1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;LeftClickElements&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Button1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;AccessShortcut&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Ctrl&amp;#43;Alt&amp;#43;Y&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ListBox&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuItem&lt;/span&gt; &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Menu1&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuSeparator&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuItem&lt;/span&gt; &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;SubMenuHeader1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;ImageRightSource&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;images/arrow.png&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenu&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ListBox&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuItem&lt;/span&gt; &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;SubMenu1&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
                    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ListBox&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenu&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuItem&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuItem&lt;/span&gt; &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Menu2&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuItem&lt;/span&gt; &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Menu3&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ListBox&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenu&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;br&gt;
&lt;p&gt;The example below however uses an XAML free approach to generate a right click menu with a submenu on a Datagrid:&lt;/p&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; GenerateDynamicDemo()
{
    &lt;span class="rem"&gt;// Add a DataGrid control with some sample data to the layout root&lt;/span&gt;
    var data = &lt;span class="kwrd"&gt;new&lt;/span&gt; ObservableCollection&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt;(&lt;span class="str"&gt;&amp;quot;Item 1,Item 2,Item 3,Item 4,Item 6,Item 7,Item 8&amp;quot;&lt;/span&gt;.Split(&lt;span class="str"&gt;','&lt;/span&gt;));
    DataGrid dataGrid1 = &lt;span class="kwrd"&gt;new&lt;/span&gt; DataGrid() { Margin = &lt;span class="kwrd"&gt;new&lt;/span&gt; Thickness(50), ItemsSource = data };
    &lt;span class="kwrd"&gt;this&lt;/span&gt;.LayoutRoot.Children.Add(dataGrid1);

    &lt;span class="rem"&gt;// Create the submenu&lt;/span&gt;
    var spmTimeNow = &lt;span class="kwrd"&gt;new&lt;/span&gt; PopupMenu();
    spmTimeNow.AddItem(&lt;span class="str"&gt;&amp;quot;Time Now&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;null&lt;/span&gt;);
    &lt;span class="rem"&gt;// Create the main menu&lt;/span&gt;
    var pm1 = &lt;span class="kwrd"&gt;new&lt;/span&gt; PopupMenu { AccessShortcut = &lt;span class="str"&gt;&amp;quot;Ctrl&amp;#43;Alt&amp;#43;M&amp;quot;&lt;/span&gt;, OpenOnAccessKeyPressed = &lt;span class="kwrd"&gt;true&lt;/span&gt; };

    &lt;span class="rem"&gt;// Add the menu items&lt;/span&gt;
    pm1.AddItem(&lt;span class="str"&gt;&amp;quot;Delete row&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;delegate&lt;/span&gt; { data.RemoveAt(pm1.GetClickedElement&amp;lt;DataGridRow&amp;gt;().GetIndex()); });
    pm1.AddSeparator();
    pm1.AddSubMenu(spmTimeNow, &lt;span class="str"&gt;&amp;quot;Get Time &amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;images/arrow.png&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;null&lt;/span&gt;, &lt;span class="kwrd"&gt;null&lt;/span&gt;, &lt;span class="kwrd"&gt;false&lt;/span&gt;, &lt;span class="kwrd"&gt;null&lt;/span&gt;); &lt;span class="rem"&gt;// Attach the submenu pmTimeSub&lt;/span&gt;
    pm1.AddSeparator();
    pm1.AddItem(&lt;span class="str"&gt;&amp;quot;Demo2&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;delegate&lt;/span&gt; { App.Current.Host.NavigationState = &lt;span class="str"&gt;&amp;quot;/Views/Demo2.xaml&amp;quot;&lt;/span&gt;; });

    &lt;span class="rem"&gt;// Set dataGrid1 as the trigger element&lt;/span&gt;
    pm1.AddTrigger(TriggerTypes.RightClick, dataGrid1);

    &lt;span class="rem"&gt;// Showing main menu&lt;/span&gt;
    pm1.Showing &amp;#43;= (sender, e) =&amp;gt;
    {
        pm1.PopupMenuItem(0).Header = &lt;span class="str"&gt;&amp;quot;Delete &amp;quot;&lt;/span&gt; &amp;#43; dataGrid1.SelectedItem;
        pm1.PopupMenuItem(0).IsVisible =
        pm1.PopupMenuItem(1).IsVisible = pm1.GetClickedElement&amp;lt;DataGridRow&amp;gt;() != &lt;span class="kwrd"&gt;null&lt;/span&gt;;
    };
    &lt;span class="rem"&gt;// Showing submenu&lt;/span&gt;
    spmTimeNow.Showing &amp;#43;= &lt;span class="kwrd"&gt;delegate&lt;/span&gt;
    {
        spmTimeNow.PopupMenuItem(0).Header = DateTime.Now.ToLongTimeString();
    };
}&lt;/pre&gt;
&lt;p&gt;To see the compiled outcome &lt;a href="http://www.pikatoo.com/SL4PopupMenu/Default.aspx#/Views/Demo1.xaml"&gt;
&lt;strong&gt;click here&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you used the control and made improvements on it and would like to share it or if you got questions, comments, suggestions or critics then feel free to use my email address(hellozi at live dot com) for this purpose.
&lt;/p&gt;
&lt;p&gt;Otherwise leaving a review at the bottom would fairly do.&lt;/p&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>ZiadJ</author><pubDate>Tue, 17 May 2011 21:09:43 GMT</pubDate><guid isPermaLink="false">Updated Wiki: test 20110517090943P</guid></item><item><title>Updated Wiki: test</title><link>http://sl4popupmenu.codeplex.com/wikipage?title=test&amp;version=74</link><description>&lt;div class="wikidoc"&gt;
&lt;p&gt;&lt;strong&gt;Context menu and hierachical menu for Silverlight 4.0&lt;/strong&gt; &lt;br&gt;
&lt;br&gt;
This project started out after I found nothing in the Silverlight open source community that would allow me to use the popup control in a straightforward manner. It is now a fully fledged multilevel menu with support for templating, commanding and many other
 goodies. I tried to make it as flexible as possible to answer the needs of most Silverlight developers out there while keeping it under 30K(zipped).&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.pikatoo.com/SL4PopupMenu/Default.aspx#/Views/Demo2.xaml"&gt;&lt;strong&gt;Click here&lt;/strong&gt;&lt;/a&gt; to view a demo on the general capabilities of the control in handling shortcut, access keys(try Ctrl&amp;#43;Alt&amp;#43;M), left click, right click and hover events.&lt;/p&gt;
&lt;p&gt;In short here is what you get:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Nested Menus &lt;/li&gt;&lt;li&gt;Pinnable Menus &lt;/li&gt;&lt;li&gt;Boundary Detection &lt;/li&gt;&lt;li&gt;Animations &lt;/li&gt;&lt;li&gt;Keyboard Navigation &lt;/li&gt;&lt;li&gt;Shortcuts and Access Keys &lt;/li&gt;&lt;li&gt;&lt;span&gt;Data Binding&lt;/span&gt; &lt;/li&gt;&lt;li&gt;Command Support &lt;/li&gt;&lt;li&gt;Vertical Menu Orientation &lt;/li&gt;&lt;li&gt;Context Menu &lt;/li&gt;&lt;li&gt;Styling &lt;/li&gt;&lt;li&gt;Use Existing Themes &lt;/li&gt;&lt;li&gt;Scrollable &lt;/li&gt;&lt;li&gt;Three State Checkbox &lt;/li&gt;&lt;li&gt;Item Template &lt;/li&gt;&lt;li&gt;Reusability &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Just put an ItemsControl such as a ListBox inside it, specify the name(s) of the trigger control(s) and your menu is ready to fly when you left click, right click or hover the latter.
&lt;/p&gt;
&lt;p&gt;Any derivative a the ItemsControl like the Treeview can be used as template. However when no control is specified an auto-generated ListBox is used by default.
&lt;br&gt;
In the example below a menu consisting of a few menu items and a submenu will popup when the shortcut Ctrl&amp;#43;Alt&amp;#43;M is pressed or when Button1 is right or left clicked:&lt;/p&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;    &amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Button&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Button1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;50&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenu&lt;/span&gt; &lt;span class="attr"&gt;RightClickElements&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Button1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;LeftClickElements&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Button1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;AccessShortcut&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Ctrl&amp;#43;Alt&amp;#43;Y&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ListBox&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuItem&lt;/span&gt; &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Menu1&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuSeparator&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuItem&lt;/span&gt; &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;SubMenuHeader1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;ImageRightSource&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;images/arrow.png&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenu&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ListBox&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuItem&lt;/span&gt; &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;SubMenu1&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
                    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ListBox&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenu&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuItem&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuItem&lt;/span&gt; &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Menu2&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuItem&lt;/span&gt; &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Menu3&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ListBox&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenu&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;br&gt;
&lt;p&gt;Below however is an XAML free approach in creating a menu on a Datagrid with a submenu:&lt;/p&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; GenerateDynamicDemo()
{
    &lt;span class="rem"&gt;// Add a DataGrid control with some sample data to the layout root&lt;/span&gt;
    var data = &lt;span class="kwrd"&gt;new&lt;/span&gt; ObservableCollection&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt;(&lt;span class="str"&gt;&amp;quot;Item 1,Item 2,Item 3,Item 4,Item 6,Item 7,Item 8&amp;quot;&lt;/span&gt;.Split(&lt;span class="str"&gt;','&lt;/span&gt;));
    DataGrid dataGrid1 = &lt;span class="kwrd"&gt;new&lt;/span&gt; DataGrid() { Margin = &lt;span class="kwrd"&gt;new&lt;/span&gt; Thickness(50), ItemsSource = data };
    &lt;span class="kwrd"&gt;this&lt;/span&gt;.LayoutRoot.Children.Add(dataGrid1);

    &lt;span class="rem"&gt;// Create the submenu&lt;/span&gt;
    var spmTimeNow = &lt;span class="kwrd"&gt;new&lt;/span&gt; PopupMenu();
    spmTimeNow.AddItem(&lt;span class="str"&gt;&amp;quot;Time Now&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;null&lt;/span&gt;);
    &lt;span class="rem"&gt;// Create the main menu&lt;/span&gt;
    var pm1 = &lt;span class="kwrd"&gt;new&lt;/span&gt; PopupMenu { AccessShortcut = &lt;span class="str"&gt;&amp;quot;Ctrl&amp;#43;Alt&amp;#43;M&amp;quot;&lt;/span&gt;, OpenOnAccessKeyPressed = &lt;span class="kwrd"&gt;true&lt;/span&gt; };

    &lt;span class="rem"&gt;// Add the menu items&lt;/span&gt;
    pm1.AddItem(&lt;span class="str"&gt;&amp;quot;Delete row&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;delegate&lt;/span&gt; { data.RemoveAt(pm1.GetClickedElement&amp;lt;DataGridRow&amp;gt;().GetIndex()); });
    pm1.AddSeparator();
    pm1.AddSubMenu(spmTimeNow, &lt;span class="str"&gt;&amp;quot;Get Time &amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;images/arrow.png&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;null&lt;/span&gt;, &lt;span class="kwrd"&gt;null&lt;/span&gt;, &lt;span class="kwrd"&gt;false&lt;/span&gt;, &lt;span class="kwrd"&gt;null&lt;/span&gt;); &lt;span class="rem"&gt;// Attach the submenu pmTimeSub&lt;/span&gt;
    pm1.AddSeparator();
    pm1.AddItem(&lt;span class="str"&gt;&amp;quot;Demo2&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;delegate&lt;/span&gt; { App.Current.Host.NavigationState = &lt;span class="str"&gt;&amp;quot;/Views/Demo2.xaml&amp;quot;&lt;/span&gt;; });

    &lt;span class="rem"&gt;// Set dataGrid1 as the trigger element&lt;/span&gt;
    pm1.AddTrigger(TriggerTypes.RightClick, dataGrid1);

    &lt;span class="rem"&gt;// Showing main menu&lt;/span&gt;
    pm1.Showing &amp;#43;= (sender, e) =&amp;gt;
    {
        pm1.PopupMenuItem(0).Header = &lt;span class="str"&gt;&amp;quot;Delete &amp;quot;&lt;/span&gt; &amp;#43; dataGrid1.SelectedItem;
        pm1.PopupMenuItem(0).IsVisible =
        pm1.PopupMenuItem(1).IsVisible = pm1.GetClickedElement&amp;lt;DataGridRow&amp;gt;() != &lt;span class="kwrd"&gt;null&lt;/span&gt;;
    };
    &lt;span class="rem"&gt;// Showing submenu&lt;/span&gt;
    spmTimeNow.Showing &amp;#43;= &lt;span class="kwrd"&gt;delegate&lt;/span&gt;
    {
        spmTimeNow.PopupMenuItem(0).Header = DateTime.Now.ToLongTimeString();
    };
}&lt;/pre&gt;
&lt;p&gt;To see the compiled outcome &lt;a href="http://www.pikatoo.com/SL4PopupMenu/Default.aspx#/Views/Demo1.xaml"&gt;
&lt;strong&gt;click here&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you used the control and made improvements on it and would like to share it or if you got questions, comments, suggestions or critics then feel free to use my email address(hellozi at live dot com) for this purpose.
&lt;/p&gt;
&lt;p&gt;Otherwise leaving a review at the bottom would fairly do.&lt;/p&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>ZiadJ</author><pubDate>Tue, 17 May 2011 21:04:40 GMT</pubDate><guid isPermaLink="false">Updated Wiki: test 20110517090440P</guid></item><item><title>Updated Wiki: test</title><link>http://sl4popupmenu.codeplex.com/wikipage?title=test&amp;version=73</link><description>&lt;div class="wikidoc"&gt;
&lt;p&gt;&lt;strong&gt;Context menu and hierachical menu for Silverlight 4.0&lt;/strong&gt; &lt;br&gt;
&lt;br&gt;
This project started out after I found nothing in the Silverlight open source community that would allow me to use the popup control in a straightforward manner. It is now a fully fledged multilevel menu with support for templating, commanding and many other
 goodies. I tried to make it as flexible as possible to answer the needs of most Silverlight developers out there while keeping it under 30K(zipped).&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.pikatoo.com/SL4PopupMenu/Default.aspx#/Views/Demo2.xaml"&gt;&lt;strong&gt;Click here&lt;/strong&gt;&lt;/a&gt; to view a demo on the general capabilities of the control in handling shortcut, access keys(try Ctrl&amp;#43;Alt&amp;#43;M), left click, right click and hover events.&lt;/p&gt;
&lt;p&gt;In short here is what you get:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Nested Menus &lt;/li&gt;&lt;li&gt;Pinnable Menus &lt;/li&gt;&lt;li&gt;Boundary Detection &lt;/li&gt;&lt;li&gt;Animations &lt;/li&gt;&lt;li&gt;Keyboard Navigation &lt;/li&gt;&lt;li&gt;Shortcuts and Access Keys &lt;/li&gt;&lt;li&gt;&lt;span&gt;Data Binding&lt;/span&gt; &lt;/li&gt;&lt;li&gt;Command Support &lt;/li&gt;&lt;li&gt;Vertical Menu Orientation &lt;/li&gt;&lt;li&gt;Context Menu &lt;/li&gt;&lt;li&gt;Styling &lt;/li&gt;&lt;li&gt;Use Existing Themes &lt;/li&gt;&lt;li&gt;Scrollable &lt;/li&gt;&lt;li&gt;Three State Checkbox &lt;/li&gt;&lt;li&gt;Item Template &lt;/li&gt;&lt;li&gt;Reusability &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Just put an ItemsControl such as a ListBox inside it, specify the name(s) of the trigger control(s) and your menu is ready to fly when you left click, right click or hover the latter.
&lt;/p&gt;
&lt;p&gt;Any derivative a the ItemsControl like the Treeview can be used as template. However when no control is specified an auto-generated ListBox is used by default.
&lt;br&gt;
In the example below a menu consisting of a few menu items and a submenu will popup when the shortcut Ctrl&amp;#43;Alt&amp;#43;M is pressed or when Button1 is right or left clicked:&lt;/p&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Button&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Button1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;50&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenu&lt;/span&gt; &lt;span class="attr"&gt;RightClickElements&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Button1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;LeftClickElements&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Button1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;AccessShortcut&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Ctrl&amp;#43;Alt&amp;#43;Y&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ListBox&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuItem&lt;/span&gt; &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Menu1&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuSeparator&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuItem&lt;/span&gt; &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;SubMenuHeader1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;ImageRightSource&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;images/arrow.png&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenu&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ListBox&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuItem&lt;/span&gt; &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;SubMenu1&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
                    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ListBox&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenu&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuItem&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuItem&lt;/span&gt; &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Menu2&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuItem&lt;/span&gt; &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Menu3&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ListBox&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenu&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;br&gt;
&lt;p&gt;Below however is an XAML free approach in creating a menu on a Datagrid with a submenu:&lt;/p&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; GenerateDynamicDemo()
{
    &lt;span class="rem"&gt;// Add a DataGrid control with some sample data to the layout root&lt;/span&gt;
    var data = &lt;span class="kwrd"&gt;new&lt;/span&gt; ObservableCollection&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt;(&lt;span class="str"&gt;&amp;quot;Item 1,Item 2,Item 3,Item 4,Item 6,Item 7,Item 8&amp;quot;&lt;/span&gt;.Split(&lt;span class="str"&gt;','&lt;/span&gt;));
    DataGrid dataGrid1 = &lt;span class="kwrd"&gt;new&lt;/span&gt; DataGrid() { Margin = &lt;span class="kwrd"&gt;new&lt;/span&gt; Thickness(50), ItemsSource = data };
    &lt;span class="kwrd"&gt;this&lt;/span&gt;.LayoutRoot.Children.Add(dataGrid1);

    &lt;span class="rem"&gt;// Create the submenu&lt;/span&gt;
    var spmTimeNow = &lt;span class="kwrd"&gt;new&lt;/span&gt; PopupMenu();
    spmTimeNow.AddItem(&lt;span class="str"&gt;&amp;quot;Time Now&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;null&lt;/span&gt;);
    &lt;span class="rem"&gt;// Create the main menu&lt;/span&gt;
    var pm1 = &lt;span class="kwrd"&gt;new&lt;/span&gt; PopupMenu { AccessShortcut = &lt;span class="str"&gt;&amp;quot;Ctrl&amp;#43;Alt&amp;#43;M&amp;quot;&lt;/span&gt;, OpenOnAccessKeyPressed = &lt;span class="kwrd"&gt;true&lt;/span&gt; };

    &lt;span class="rem"&gt;// Add the menu items&lt;/span&gt;
    pm1.AddItem(&lt;span class="str"&gt;&amp;quot;Delete row&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;delegate&lt;/span&gt; { data.RemoveAt(pm1.GetClickedElement&amp;lt;DataGridRow&amp;gt;().GetIndex()); });
    pm1.AddSeparator();
    pm1.AddSubMenu(spmTimeNow, &lt;span class="str"&gt;&amp;quot;Get Time &amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;images/arrow.png&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;null&lt;/span&gt;, &lt;span class="kwrd"&gt;null&lt;/span&gt;, &lt;span class="kwrd"&gt;false&lt;/span&gt;, &lt;span class="kwrd"&gt;null&lt;/span&gt;); &lt;span class="rem"&gt;// Attach the submenu pmTimeSub&lt;/span&gt;
    pm1.AddSeparator();
    pm1.AddItem(&lt;span class="str"&gt;&amp;quot;Demo2&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;delegate&lt;/span&gt; { App.Current.Host.NavigationState = &lt;span class="str"&gt;&amp;quot;/Views/Demo2.xaml&amp;quot;&lt;/span&gt;; });

    &lt;span class="rem"&gt;// Set dataGrid1 as the trigger element&lt;/span&gt;
    pm1.AddTrigger(TriggerTypes.RightClick, dataGrid1);

    &lt;span class="rem"&gt;// Showing main menu&lt;/span&gt;
    pm1.Showing &amp;#43;= (sender, e) =&amp;gt;
    {
        pm1.PopupMenuItem(0).Header = &lt;span class="str"&gt;&amp;quot;Delete &amp;quot;&lt;/span&gt; &amp;#43; dataGrid1.SelectedItem;
        pm1.PopupMenuItem(0).IsVisible =
        pm1.PopupMenuItem(1).IsVisible = pm1.GetClickedElement&amp;lt;DataGridRow&amp;gt;() != &lt;span class="kwrd"&gt;null&lt;/span&gt;;
    };
    &lt;span class="rem"&gt;// Showing submenu&lt;/span&gt;
    spmTimeNow.Showing &amp;#43;= &lt;span class="kwrd"&gt;delegate&lt;/span&gt;
    {
        spmTimeNow.PopupMenuItem(0).Header = DateTime.Now.ToLongTimeString();
    };
}&lt;/pre&gt;
&lt;p&gt;To see the compiled outcome &lt;a href="http://www.pikatoo.com/SL4PopupMenu/Default.aspx#/Views/Demo1.xaml"&gt;
&lt;strong&gt;click here&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you used the control and made improvements on it and would like to share it or if you got questions, comments, suggestions or critics then feel free to use my email address(hellozi at live dot com) for this purpose.
&lt;/p&gt;
&lt;p&gt;Otherwise leaving a review at the bottom would fairly do.&lt;/p&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>ZiadJ</author><pubDate>Tue, 17 May 2011 21:03:23 GMT</pubDate><guid isPermaLink="false">Updated Wiki: test 20110517090323P</guid></item><item><title>Updated Wiki: test</title><link>http://sl4popupmenu.codeplex.com/wikipage?title=test&amp;version=72</link><description>&lt;div class="wikidoc"&gt;
&lt;p&gt;&lt;strong&gt;Context menu and hierachical menu for Silverlight 4.0&lt;/strong&gt; &lt;br&gt;
&lt;br&gt;
This project started out after I found nothing in the Silverlight open source community that would allow me to use the popup control in a straightforward manner. It is now a fully fledged multilevel menu with support for templating, commanding and many other
 goodies. I tried to make it as flexible as possible to answer the needs of most Silverlight developers out there while keeping it under 30K(zipped).&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.pikatoo.com/SL4PopupMenu/Default.aspx#/Views/Demo2.xaml"&gt;&lt;strong&gt;Click here&lt;/strong&gt;&lt;/a&gt; to view a demo on the general capabilities of the control in handling shortcut, access keys(try Ctrl&amp;#43;Alt&amp;#43;M), left click, right click and hover events.&lt;/p&gt;
&lt;p&gt;In short here is what you get:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Nested Menus &lt;/li&gt;&lt;li&gt;Pinnable Menus &lt;/li&gt;&lt;li&gt;Boundary Detection &lt;/li&gt;&lt;li&gt;Animations &lt;/li&gt;&lt;li&gt;Keyboard Navigation &lt;/li&gt;&lt;li&gt;Shortcuts and Access Keys &lt;/li&gt;&lt;li&gt;&lt;span&gt;Data Binding&lt;/span&gt; &lt;/li&gt;&lt;li&gt;Command Support &lt;/li&gt;&lt;li&gt;Vertical Menu Orientation &lt;/li&gt;&lt;li&gt;Context Menu &lt;/li&gt;&lt;li&gt;Styling &lt;/li&gt;&lt;li&gt;Use Existing Themes &lt;/li&gt;&lt;li&gt;Scrollable &lt;/li&gt;&lt;li&gt;Three State Checkbox &lt;/li&gt;&lt;li&gt;Item Template &lt;/li&gt;&lt;li&gt;Reusability &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Just put an ItemsControl such as a ListBox inside it, specify the name(s) of the trigger control(s) and your menu is ready to fly when you left click, right click or hover the latter.&lt;/p&gt;
&lt;p&gt;Any derivative a the ItemsControl like the Treeview can be used as template. However when no control is specified an auto-generated ListBox is used by default.
&lt;br&gt;
In the example below a menu consisting of a few menu items and a submenu will popup when the shortcut Ctrl&amp;#43;Alt&amp;#43;M is pressed or when Button1 is right or left clicked:&lt;/p&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Button&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Button1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;50&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenu&lt;/span&gt; &lt;span class="attr"&gt;RightClickElements&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Button1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;LeftClickElements&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Button1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;AccessShortcut&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Ctrl&amp;#43;Alt&amp;#43;Y&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ListBox&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuItem&lt;/span&gt; &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Menu1&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuSeparator&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuItem&lt;/span&gt; &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;SubMenuHeader1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;ImageRightSource&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;images/arrow.png&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenu&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ListBox&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuItem&lt;/span&gt; &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;SubMenu1&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
                    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ListBox&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenu&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuItem&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuItem&lt;/span&gt; &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Menu2&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuItem&lt;/span&gt; &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Menu3&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ListBox&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenu&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;Below however is an XAML free approach in creating a menu on a Datagrid with a submenu:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; GenerateDynamicDemo()
{
    &lt;span class="rem"&gt;// Add a DataGrid control with some sample data to the layout root&lt;/span&gt;
    var data = &lt;span class="kwrd"&gt;new&lt;/span&gt; ObservableCollection&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt;(&lt;span class="str"&gt;&amp;quot;Item 1,Item 2,Item 3,Item 4,Item 6,Item 7,Item 8&amp;quot;&lt;/span&gt;.Split(&lt;span class="str"&gt;','&lt;/span&gt;));
    DataGrid dataGrid1 = &lt;span class="kwrd"&gt;new&lt;/span&gt; DataGrid() { Margin = &lt;span class="kwrd"&gt;new&lt;/span&gt; Thickness(50), ItemsSource = data };
    &lt;span class="kwrd"&gt;this&lt;/span&gt;.LayoutRoot.Children.Add(dataGrid1);

    &lt;span class="rem"&gt;// Create the submenu&lt;/span&gt;
    var spmTimeNow = &lt;span class="kwrd"&gt;new&lt;/span&gt; PopupMenu();
    spmTimeNow.AddItem(&lt;span class="str"&gt;&amp;quot;Time Now&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;null&lt;/span&gt;);
    &lt;span class="rem"&gt;// Create the main menu&lt;/span&gt;
    var pm1 = &lt;span class="kwrd"&gt;new&lt;/span&gt; PopupMenu { AccessShortcut = &lt;span class="str"&gt;&amp;quot;Ctrl&amp;#43;Alt&amp;#43;M&amp;quot;&lt;/span&gt;, OpenOnAccessKeyPressed = &lt;span class="kwrd"&gt;true&lt;/span&gt; };

    &lt;span class="rem"&gt;// Add the menu items&lt;/span&gt;
    pm1.AddItem(&lt;span class="str"&gt;&amp;quot;Delete row&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;delegate&lt;/span&gt; { data.RemoveAt(pm1.GetClickedElement&amp;lt;DataGridRow&amp;gt;().GetIndex()); });
    pm1.AddSeparator();
    pm1.AddSubMenu(spmTimeNow, &lt;span class="str"&gt;&amp;quot;Get Time &amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;images/arrow.png&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;null&lt;/span&gt;, &lt;span class="kwrd"&gt;null&lt;/span&gt;, &lt;span class="kwrd"&gt;false&lt;/span&gt;, &lt;span class="kwrd"&gt;null&lt;/span&gt;); &lt;span class="rem"&gt;// Attach the submenu pmTimeSub&lt;/span&gt;
    pm1.AddSeparator();
    pm1.AddItem(&lt;span class="str"&gt;&amp;quot;Demo2&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;delegate&lt;/span&gt; { App.Current.Host.NavigationState = &lt;span class="str"&gt;&amp;quot;/Views/Demo2.xaml&amp;quot;&lt;/span&gt;; });

    &lt;span class="rem"&gt;// Set dataGrid1 as the trigger element&lt;/span&gt;
    pm1.AddTrigger(TriggerTypes.RightClick, dataGrid1);

    &lt;span class="rem"&gt;// Showing main menu&lt;/span&gt;
    pm1.Showing &amp;#43;= (sender, e) =&amp;gt;
    {
        pm1.PopupMenuItem(0).Header = &lt;span class="str"&gt;&amp;quot;Delete &amp;quot;&lt;/span&gt; &amp;#43; dataGrid1.SelectedItem;
        pm1.PopupMenuItem(0).IsVisible =
        pm1.PopupMenuItem(1).IsVisible = pm1.GetClickedElement&amp;lt;DataGridRow&amp;gt;() != &lt;span class="kwrd"&gt;null&lt;/span&gt;;
    };
    &lt;span class="rem"&gt;// Showing submenu&lt;/span&gt;
    spmTimeNow.Showing &amp;#43;= &lt;span class="kwrd"&gt;delegate&lt;/span&gt;
    {
        spmTimeNow.PopupMenuItem(0).Header = DateTime.Now.ToLongTimeString();
    };
}&lt;/pre&gt;
&lt;p&gt;To see the compiled outcome &lt;a href="http://www.pikatoo.com/SL4PopupMenu/Default.aspx#/Views/Demo1.xaml"&gt;
&lt;strong&gt;click here&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you used the control and made improvements on it and would like to share it or if you got questions, comments, suggestions or critics then feel free to use my email address(hellozi at live dot com) for this purpose.&lt;/p&gt;
&lt;p&gt;Otherwise leaving a review at the bottom would fairly do.&lt;/p&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>ZiadJ</author><pubDate>Tue, 17 May 2011 21:01:59 GMT</pubDate><guid isPermaLink="false">Updated Wiki: test 20110517090159P</guid></item><item><title>Updated Wiki: test</title><link>http://sl4popupmenu.codeplex.com/wikipage?title=test&amp;version=71</link><description>&lt;div class="wikidoc"&gt;
&lt;p&gt;&lt;strong&gt;Context menu and hierachical menu for Silverlight 4.0&lt;/strong&gt; &lt;br&gt;
&lt;br&gt;
This project started out after I found nothing in the Silverlight open source community that would allow me to use the popup control in a straightforward manner. It is now a fully fledged multilevel menu with support for templating, commanding and many other
 goodies. I tried to make it as flexible as possible to answer the needs of most Silverlight developers out there while keeping it under 30K(zipped).&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.pikatoo.com/SL4PopupMenu/Default.aspx#/Views/Demo2.xaml"&gt;&lt;strong&gt;Click here&lt;/strong&gt;&lt;/a&gt; to view a demo on the general capabilities of the control in handling shortcut, access keys(try Ctrl&amp;#43;Alt&amp;#43;M), left click, right click and hover events.&lt;/p&gt;
&lt;p&gt;In short here is what you get:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Nested Menus &lt;/li&gt;&lt;li&gt;Pinnable Menus &lt;/li&gt;&lt;li&gt;Boundary Detection &lt;/li&gt;&lt;li&gt;Animations &lt;/li&gt;&lt;li&gt;Keyboard Navigation &lt;/li&gt;&lt;li&gt;Shortcuts and Access Keys &lt;/li&gt;&lt;li&gt;&lt;span&gt;Data Binding&lt;/span&gt; &lt;/li&gt;&lt;li&gt;Command Support &lt;/li&gt;&lt;li&gt;Vertical Menu Orientation &lt;/li&gt;&lt;li&gt;Context Menu &lt;/li&gt;&lt;li&gt;Styling &lt;/li&gt;&lt;li&gt;Use Existing Themes &lt;/li&gt;&lt;li&gt;Scrollable &lt;/li&gt;&lt;li&gt;Three State Checkbox &lt;/li&gt;&lt;li&gt;Item Template &lt;/li&gt;&lt;li&gt;Reusability &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Just put an ItemsControl such as a ListBox inside it, specify the name(s) of the trigger control(s) and your menu is ready to fly when you left click, right click or hover the latter.
&lt;/p&gt;
&lt;p&gt;Any derivative a the ItemsControl like the Treeview can be used as template. However when no control is specified an auto-generated ListBox is used by default.
&lt;br&gt;
In the example below a menu consisting of a few menu items and a submenu will popup when the shortcut Ctrl&amp;#43;Alt&amp;#43;M is pressed or when Button1 is right or left clicked:&lt;/p&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Button&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Button1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;50&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenu&lt;/span&gt; &lt;span class="attr"&gt;RightClickElements&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Button1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;LeftClickElements&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Button1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;AccessShortcut&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Ctrl&amp;#43;Alt&amp;#43;Y&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ListBox&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuItem&lt;/span&gt; &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Menu1&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuSeparator&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuItem&lt;/span&gt; &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;SubMenuHeader1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;ImageRightSource&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;images/arrow.png&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenu&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ListBox&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuItem&lt;/span&gt; &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;SubMenu1&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
                    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ListBox&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenu&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuItem&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuItem&lt;/span&gt; &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Menu2&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuItem&lt;/span&gt; &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Menu3&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ListBox&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenu&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;Below however is an XAML free approach in creating a menu on a Datagrid with a submenu:&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; GenerateDynamicDemo()
{
    &lt;span class="rem"&gt;// Add a DataGrid control with some sample data to the layout root&lt;/span&gt;
    var data = &lt;span class="kwrd"&gt;new&lt;/span&gt; ObservableCollection&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt;(&lt;span class="str"&gt;&amp;quot;Item 1,Item 2,Item 3,Item 4,Item 6,Item 7,Item 8&amp;quot;&lt;/span&gt;.Split(&lt;span class="str"&gt;','&lt;/span&gt;));
    DataGrid dataGrid1 = &lt;span class="kwrd"&gt;new&lt;/span&gt; DataGrid() { Margin = &lt;span class="kwrd"&gt;new&lt;/span&gt; Thickness(50), ItemsSource = data };
    &lt;span class="kwrd"&gt;this&lt;/span&gt;.LayoutRoot.Children.Add(dataGrid1);

    &lt;span class="rem"&gt;// Create the submenu&lt;/span&gt;
    var spmTimeNow = &lt;span class="kwrd"&gt;new&lt;/span&gt; PopupMenu();
    spmTimeNow.AddItem(&lt;span class="str"&gt;&amp;quot;Time Now&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;null&lt;/span&gt;);
    &lt;span class="rem"&gt;// Create the main menu&lt;/span&gt;
    var pm1 = &lt;span class="kwrd"&gt;new&lt;/span&gt; PopupMenu { AccessShortcut = &lt;span class="str"&gt;&amp;quot;Ctrl&amp;#43;Alt&amp;#43;M&amp;quot;&lt;/span&gt;, OpenOnAccessKeyPressed = &lt;span class="kwrd"&gt;true&lt;/span&gt; };

    &lt;span class="rem"&gt;// Add the menu items&lt;/span&gt;
    pm1.AddItem(&lt;span class="str"&gt;&amp;quot;Delete row&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;delegate&lt;/span&gt; { data.RemoveAt(pm1.GetClickedElement&amp;lt;DataGridRow&amp;gt;().GetIndex()); });
    pm1.AddSeparator();
    pm1.AddSubMenu(spmTimeNow, &lt;span class="str"&gt;&amp;quot;Get Time &amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;images/arrow.png&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;null&lt;/span&gt;, &lt;span class="kwrd"&gt;null&lt;/span&gt;, &lt;span class="kwrd"&gt;false&lt;/span&gt;, &lt;span class="kwrd"&gt;null&lt;/span&gt;); &lt;span class="rem"&gt;// Attach the submenu pmTimeSub&lt;/span&gt;
    pm1.AddSeparator();
    pm1.AddItem(&lt;span class="str"&gt;&amp;quot;Demo2&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;delegate&lt;/span&gt; { App.Current.Host.NavigationState = &lt;span class="str"&gt;&amp;quot;/Views/Demo2.xaml&amp;quot;&lt;/span&gt;; });

    &lt;span class="rem"&gt;// Set dataGrid1 as the trigger element&lt;/span&gt;
    pm1.AddTrigger(TriggerTypes.RightClick, dataGrid1);

    &lt;span class="rem"&gt;// Showing main menu&lt;/span&gt;
    pm1.Showing &amp;#43;= (sender, e) =&amp;gt;
    {
        pm1.PopupMenuItem(0).Header = &lt;span class="str"&gt;&amp;quot;Delete &amp;quot;&lt;/span&gt; &amp;#43; dataGrid1.SelectedItem;
        pm1.PopupMenuItem(0).IsVisible =
        pm1.PopupMenuItem(1).IsVisible = pm1.GetClickedElement&amp;lt;DataGridRow&amp;gt;() != &lt;span class="kwrd"&gt;null&lt;/span&gt;;
    };
    &lt;span class="rem"&gt;// Showing submenu&lt;/span&gt;
    spmTimeNow.Showing &amp;#43;= &lt;span class="kwrd"&gt;delegate&lt;/span&gt;
    {
        spmTimeNow.PopupMenuItem(0).Header = DateTime.Now.ToLongTimeString();
    };
}&lt;/pre&gt;
&lt;p&gt;To see the compiled outcome &lt;a href="http://www.pikatoo.com/SL4PopupMenu/Default.aspx#/Views/Demo1.xaml"&gt;
&lt;strong&gt;click here&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you used the control and made improvements on it and would like to share it or if you got questions, comments, suggestions or critics then feel free to use my email address(hellozi at live dot com) for this purpose.
&lt;/p&gt;
&lt;p&gt;Otherwise leaving a review at the bottom would fairly do.&lt;/p&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>ZiadJ</author><pubDate>Tue, 17 May 2011 21:00:45 GMT</pubDate><guid isPermaLink="false">Updated Wiki: test 20110517090045P</guid></item><item><title>Updated Wiki: test</title><link>http://sl4popupmenu.codeplex.com/wikipage?title=test&amp;version=70</link><description>&lt;div class="wikidoc"&gt;
&lt;p&gt;&lt;strong&gt;Context menu and hierachical menu for Silverlight 4.0&lt;/strong&gt; &lt;br&gt;
&lt;br&gt;
This project started out after I found nothing in the Silverlight open source community that would allow me to use the popup control in a straightforward manner. It is now a fully fledged multilevel menu with support for templating, commanding and many other
 goodies. I tried to make it as flexible as possible to answer the needs of most Silverlight developers out there while keeping it under 30K(zipped).&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.pikatoo.com/SL4PopupMenu/Default.aspx#/Views/Demo2.xaml"&gt;&lt;strong&gt;Click here&lt;/strong&gt;&lt;/a&gt; to view a demo on the general capabilities of the control in handling shortcut, access keys(try Ctrl&amp;#43;Alt&amp;#43;M), left click, right click and hover events.&lt;/p&gt;
&lt;p&gt;In short here is what you get:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Nested Menus &lt;/li&gt;&lt;li&gt;Pinnable Menus &lt;/li&gt;&lt;li&gt;Boundary Detection &lt;/li&gt;&lt;li&gt;Animations &lt;/li&gt;&lt;li&gt;Keyboard Navigation &lt;/li&gt;&lt;li&gt;Shortcuts and Access Keys &lt;/li&gt;&lt;li&gt;&lt;span&gt;Data Binding&lt;/span&gt; &lt;/li&gt;&lt;li&gt;Command Support &lt;/li&gt;&lt;li&gt;Vertical Menu Orientation &lt;/li&gt;&lt;li&gt;Context Menu &lt;/li&gt;&lt;li&gt;Styling &lt;/li&gt;&lt;li&gt;Use Existing Themes &lt;/li&gt;&lt;li&gt;Scrollable &lt;/li&gt;&lt;li&gt;Three State Checkbox &lt;/li&gt;&lt;li&gt;Item Template &lt;/li&gt;&lt;li&gt;Reusability &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Just put an ItemsControl such as a ListBox inside it, specify the name(s) of the trigger control(s) and your menu is ready to fly when you left click, right click or hover the latter.
&lt;/p&gt;
&lt;p&gt;Any derivative a the ItemsControl like the Treeview can be used as template. However when no control is specified an auto-generated ListBox is used by default.
&lt;br&gt;
In the example below a menu consisting of a few menu items and a submenu will popup when the shortcut Ctrl&amp;#43;Alt&amp;#43;M is pressed or when Button1 is right or left clicked:&lt;/p&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Button&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Button1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;50&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenu&lt;/span&gt; &lt;span class="attr"&gt;RightClickElements&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Button1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;LeftClickElements&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Button1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;AccessShortcut&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Ctrl&amp;#43;Alt&amp;#43;Y&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ListBox&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuItem&lt;/span&gt; &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Menu1&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuSeparator&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuItem&lt;/span&gt; &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;SubMenuHeader1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;ImageRightSource&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;images/arrow.png&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenu&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ListBox&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuItem&lt;/span&gt; &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;SubMenu1&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
                    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ListBox&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenu&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuItem&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuItem&lt;/span&gt; &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Menu2&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuItem&lt;/span&gt; &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Menu3&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ListBox&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenu&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
Below however is an XAML free approach in creating a menu on a Datagrid with a submenu:
&lt;pre class="csharpcode"&gt;
&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; GenerateDynamicDemo()
{
    &lt;span class="rem"&gt;// Add a DataGrid control with some sample data to the layout root&lt;/span&gt;
    var data = &lt;span class="kwrd"&gt;new&lt;/span&gt; ObservableCollection&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt;(&lt;span class="str"&gt;&amp;quot;Item 1,Item 2,Item 3,Item 4,Item 6,Item 7,Item 8&amp;quot;&lt;/span&gt;.Split(&lt;span class="str"&gt;','&lt;/span&gt;));
    DataGrid dataGrid1 = &lt;span class="kwrd"&gt;new&lt;/span&gt; DataGrid() { Margin = &lt;span class="kwrd"&gt;new&lt;/span&gt; Thickness(50), ItemsSource = data };
    &lt;span class="kwrd"&gt;this&lt;/span&gt;.LayoutRoot.Children.Add(dataGrid1);

    &lt;span class="rem"&gt;// Create the submenu&lt;/span&gt;
    var spmTimeNow = &lt;span class="kwrd"&gt;new&lt;/span&gt; PopupMenu();
    spmTimeNow.AddItem(&lt;span class="str"&gt;&amp;quot;Time Now&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;null&lt;/span&gt;);
    &lt;span class="rem"&gt;// Create the main menu&lt;/span&gt;
    var pm1 = &lt;span class="kwrd"&gt;new&lt;/span&gt; PopupMenu { AccessShortcut = &lt;span class="str"&gt;&amp;quot;Ctrl&amp;#43;Alt&amp;#43;M&amp;quot;&lt;/span&gt;, OpenOnAccessKeyPressed = &lt;span class="kwrd"&gt;true&lt;/span&gt; };

    &lt;span class="rem"&gt;// Add the menu items&lt;/span&gt;
    pm1.AddItem(&lt;span class="str"&gt;&amp;quot;Delete row&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;delegate&lt;/span&gt; { data.RemoveAt(pm1.GetClickedElement&amp;lt;DataGridRow&amp;gt;().GetIndex()); });
    pm1.AddSeparator();
    pm1.AddSubMenu(spmTimeNow, &lt;span class="str"&gt;&amp;quot;Get Time &amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;images/arrow.png&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;null&lt;/span&gt;, &lt;span class="kwrd"&gt;null&lt;/span&gt;, &lt;span class="kwrd"&gt;false&lt;/span&gt;, &lt;span class="kwrd"&gt;null&lt;/span&gt;); &lt;span class="rem"&gt;// Attach the submenu pmTimeSub&lt;/span&gt;
    pm1.AddSeparator();
    pm1.AddItem(&lt;span class="str"&gt;&amp;quot;Demo2&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;delegate&lt;/span&gt; { App.Current.Host.NavigationState = &lt;span class="str"&gt;&amp;quot;/Views/Demo2.xaml&amp;quot;&lt;/span&gt;; });

    &lt;span class="rem"&gt;// Set dataGrid1 as the trigger element&lt;/span&gt;
    pm1.AddTrigger(TriggerTypes.RightClick, dataGrid1);

    &lt;span class="rem"&gt;// Showing main menu&lt;/span&gt;
    pm1.Showing &amp;#43;= (sender, e) =&amp;gt;
    {
        pm1.PopupMenuItem(0).Header = &lt;span class="str"&gt;&amp;quot;Delete &amp;quot;&lt;/span&gt; &amp;#43; dataGrid1.SelectedItem;
        pm1.PopupMenuItem(0).IsVisible =
        pm1.PopupMenuItem(1).IsVisible = pm1.GetClickedElement&amp;lt;DataGridRow&amp;gt;() != &lt;span class="kwrd"&gt;null&lt;/span&gt;;
    };
    &lt;span class="rem"&gt;// Showing submenu&lt;/span&gt;
    spmTimeNow.Showing &amp;#43;= &lt;span class="kwrd"&gt;delegate&lt;/span&gt;
    {
        spmTimeNow.PopupMenuItem(0).Header = DateTime.Now.ToLongTimeString();
    };
}&lt;/pre&gt;
&lt;p&gt;To see the compiled outcome &lt;a href="http://www.pikatoo.com/SL4PopupMenu/Default.aspx#/Views/Demo1.xaml"&gt;
&lt;strong&gt;click here&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you used the control and made improvements on it and would like to share it or if you got questions, comments, suggestions or critics then feel free to use my email address(hellozi at live dot com) for this purpose.
&lt;/p&gt;
&lt;p&gt;Otherwise leaving a review at the bottom would fairly do.&lt;/p&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>ZiadJ</author><pubDate>Tue, 17 May 2011 20:59:41 GMT</pubDate><guid isPermaLink="false">Updated Wiki: test 20110517085941P</guid></item><item><title>Updated Wiki: test</title><link>http://sl4popupmenu.codeplex.com/wikipage?title=test&amp;version=69</link><description>&lt;div class="wikidoc"&gt;&amp;lt;!-- code formatted by http://manoli.net/csharpformat/ --&amp;gt;
&lt;p&gt;&lt;strong&gt;Context menu and hierachical menu for Silverlight 4.0&lt;/strong&gt; &lt;br&gt;
&lt;br&gt;
This project started out after I found nothing in the Silverlight open source community that would allow me to use the popup control in a straightforward manner. It is now a fully fledged multilevel menu with support for templating, commanding and many other
 goodies. I tried to make it as flexible as possible to answer the needs of most Silverlight developers out there while keeping it under 30K(zipped).&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.pikatoo.com/SL4PopupMenu/Default.aspx#/Views/Demo2.xaml"&gt;&lt;strong&gt;Click here&lt;/strong&gt;&lt;/a&gt; to view a demo on the general capabilities of the control in handling shortcut, access keys(try Ctrl&amp;#43;Alt&amp;#43;M), left click, right click and hover events.&lt;/p&gt;
&lt;p&gt;In short here is what you get:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Nested Menus &lt;/li&gt;&lt;li&gt;Pinnable Menus &lt;/li&gt;&lt;li&gt;Boundary Detection &lt;/li&gt;&lt;li&gt;Animations &lt;/li&gt;&lt;li&gt;Keyboard Navigation &lt;/li&gt;&lt;li&gt;Shortcuts and Access Keys &lt;/li&gt;&lt;li&gt;&lt;span&gt;Data Binding&lt;/span&gt; &lt;/li&gt;&lt;li&gt;Command Support &lt;/li&gt;&lt;li&gt;Vertical Menu Orientation &lt;/li&gt;&lt;li&gt;Context Menu &lt;/li&gt;&lt;li&gt;Styling &lt;/li&gt;&lt;li&gt;Use Existing Themes &lt;/li&gt;&lt;li&gt;Scrollable &lt;/li&gt;&lt;li&gt;Three State Checkbox &lt;/li&gt;&lt;li&gt;Item Template &lt;/li&gt;&lt;li&gt;Reusability &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Just put an ItemsControl such as a ListBox inside it, specify the name(s) of the trigger control(s) and your menu is ready to fly when you left click, right click or hover the latter.
&lt;/p&gt;
&lt;p&gt;Any derivative a the ItemsControl like the Treeview can be used as template. However when no control is specified an auto-generated ListBox is used by default.
&lt;br&gt;
In the example below a menu consisting of a few menu items and a submenu will popup when the shortcut Ctrl&amp;#43;Alt&amp;#43;M is pressed or when Button1 is right or left clicked:&lt;/p&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Button&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Button1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;50&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenu&lt;/span&gt; &lt;span class="attr"&gt;RightClickElements&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Button1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;LeftClickElements&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Button1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;AccessShortcut&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Ctrl&amp;#43;Alt&amp;#43;Y&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ListBox&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuItem&lt;/span&gt; &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Menu1&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuSeparator&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuItem&lt;/span&gt; &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;SubMenuHeader1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;ImageRightSource&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;images/arrow.png&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenu&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ListBox&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuItem&lt;/span&gt; &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;SubMenu1&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
                    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ListBox&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenu&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuItem&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuItem&lt;/span&gt; &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Menu2&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuItem&lt;/span&gt; &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Menu3&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ListBox&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenu&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&lt;/span&gt;If you used the control and made improvements on it and would like to share it or if you got questions, comments, suggestions or critics then feel free to use my email address(hellozi at live dot com) for this purpose.&lt;/pre&gt;
&lt;p&gt;Otherwise leaving a review at the bottom would fairly do.&lt;/p&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>ZiadJ</author><pubDate>Tue, 17 May 2011 20:50:07 GMT</pubDate><guid isPermaLink="false">Updated Wiki: test 20110517085007P</guid></item><item><title>Updated Wiki: test</title><link>http://sl4popupmenu.codeplex.com/wikipage?title=test&amp;version=68</link><description>&lt;div class="wikidoc"&gt;&amp;lt;!-- code formatted by http://manoli.net/csharpformat/ --&amp;gt;
&lt;p&gt;&lt;strong&gt;Context menu and hierachical menu for Silverlight 4.0&lt;/strong&gt; &lt;br&gt;
&lt;br&gt;
This project started out after I found nothing in the Silverlight open source community that would allow me to use the popup control in a straightforward manner. It is now a fully fledged multilevel menu with support for templating, commanding and many other
 goodies. I tried to make it as flexible as possible to answer the needs of most Silverlight developers out there while keeping it under 30K(zipped).&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.pikatoo.com/SL4PopupMenu/Default.aspx#/Views/Demo2.xaml"&gt;&lt;strong&gt;Click here&lt;/strong&gt;&lt;/a&gt; to view a demo on the general capabilities of the control in handling shortcut, access keys(try Ctrl&amp;#43;Alt&amp;#43;M), left click, right click and hover events.&lt;/p&gt;
&lt;p&gt;In short here is what you get:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Nested Menus &lt;/li&gt;&lt;li&gt;Pinnable Menus &lt;/li&gt;&lt;li&gt;Boundary Detection &lt;/li&gt;&lt;li&gt;Animations &lt;/li&gt;&lt;li&gt;Keyboard Navigation &lt;/li&gt;&lt;li&gt;Shortcuts and Access Keys &lt;/li&gt;&lt;li&gt;&lt;span&gt;Data Binding&lt;/span&gt; &lt;/li&gt;&lt;li&gt;Command Support &lt;/li&gt;&lt;li&gt;Vertical Menu Orientation &lt;/li&gt;&lt;li&gt;Context Menu &lt;/li&gt;&lt;li&gt;Styling &lt;/li&gt;&lt;li&gt;Use Existing Themes &lt;/li&gt;&lt;li&gt;Scrollable &lt;/li&gt;&lt;li&gt;Three State Checkbox &lt;/li&gt;&lt;li&gt;Item Template &lt;/li&gt;&lt;li&gt;Reusability &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Just put an ItemsControl such as a ListBox inside it, specify the name(s) of the trigger control(s) and your menu is ready to fly when you left click, right click or hover the latter.
&lt;/p&gt;
&lt;p&gt;Any derivative a the ItemsControl like the Treeview can be used as template. However when no control is specified an auto-generated ListBox is used by default.
&lt;br&gt;
In the example below a menu consisting of a few menu items and a submenu will popup when the shortcut Ctrl&amp;#43;Alt&amp;#43;M is pressed or when Button1 is right or left clicked:&lt;/p&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Button&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Button1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;50&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenu&lt;/span&gt; &lt;span class="attr"&gt;RightClickElements&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Button1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;LeftClickElements&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Button1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;AccessShortcut&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Ctrl&amp;#43;Alt&amp;#43;Y&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ListBox&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuItem&lt;/span&gt; &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Menu1&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuSeparator&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuItem&lt;/span&gt; &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;SubMenuHeader1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;ImageRightSource&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;images/arrow.png&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenu&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ListBox&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuItem&lt;/span&gt; &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;SubMenu1&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
                    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ListBox&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenu&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuItem&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuItem&lt;/span&gt; &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Menu2&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenuItem&lt;/span&gt; &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Menu3&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ListBox&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;my:PopupMenu&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;If you used the control and made improvements on it and would like to share it or if you got questions, comments, suggestions or critics then feel free to use my email address(hellozi at live dot com) for this purpose.&lt;/p&gt;
&lt;p&gt;Otherwise leaving a review at the bottom would fairly do.&lt;/p&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>ZiadJ</author><pubDate>Tue, 17 May 2011 20:49:12 GMT</pubDate><guid isPermaLink="false">Updated Wiki: test 20110517084912P</guid></item></channel></rss>