<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://forums.silverlight.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Silverlight Controls and Silverlight Toolkit</title><link>http://forums.silverlight.net/forums/35.aspx</link><description>Discussions around using and developing Silverlight controls and the Silverlight Toolkit</description><dc:language>en</dc:language><generator>CommunityServer 2007 (Build: 20416.853)</generator><item><title>Re: Simple popup menu</title><link>http://forums.silverlight.net/forums/thread/268261.aspx</link><pubDate>Wed, 12 Aug 2009 21:39:10 GMT</pubDate><guid isPermaLink="false">d0d632c8-a6f7-4f68-b0ce-26aaafd62132:268261</guid><dc:creator>headbiznatch</dc:creator><slash:comments>0</slash:comments><comments>http://forums.silverlight.net/forums/thread/268261.aspx</comments><wfw:commentRss>http://forums.silverlight.net/forums/commentrss.aspx?SectionID=35&amp;PostID=268261</wfw:commentRss><description>Darn useful little snippet. Thanks for sharing.

Tips: set menu grid background to transparent, combine with VisualTree traversal to get the right parent control to perform the transform with (especially useful for Prism apps)</description></item><item><title>Re: Simple popup menu</title><link>http://forums.silverlight.net/forums/thread/251421.aspx</link><pubDate>Thu, 16 Jul 2009 17:48:06 GMT</pubDate><guid isPermaLink="false">d0d632c8-a6f7-4f68-b0ce-26aaafd62132:251421</guid><dc:creator>WindowsRich</dc:creator><slash:comments>0</slash:comments><comments>http://forums.silverlight.net/forums/thread/251421.aspx</comments><wfw:commentRss>http://forums.silverlight.net/forums/commentrss.aspx?SectionID=35&amp;PostID=251421</wfw:commentRss><description>&lt;p&gt;Good post!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;One issue&lt;/p&gt;
&lt;p&gt;&amp;gt; the menu is shown just below the button&lt;/p&gt;
&lt;p&gt;My popup appears in the top left portion of the Silverlight content region. This behavior is consistent with what I read in Matthew MacDonald&amp;#39;s Silverlight 2 book. Comments?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;One other issue&lt;/p&gt;
&lt;p&gt;&amp;gt; Popup.HorizontalOffset = x;&lt;br /&gt;I needed to add the property to the class definition.&lt;/p&gt;</description></item><item><title>Re: Simple popup menu</title><link>http://forums.silverlight.net/forums/thread/159802.aspx</link><pubDate>Tue, 13 Jan 2009 07:17:30 GMT</pubDate><guid isPermaLink="false">d0d632c8-a6f7-4f68-b0ce-26aaafd62132:159802</guid><dc:creator>Jonathan Shen – MSFT</dc:creator><slash:comments>0</slash:comments><comments>http://forums.silverlight.net/forums/thread/159802.aspx</comments><wfw:commentRss>http://forums.silverlight.net/forums/commentrss.aspx?SectionID=35&amp;PostID=159802</wfw:commentRss><description>&lt;p&gt;Hi MagicMarky,&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Thanks for sharing your sample with us. &amp;nbsp;&amp;nbsp;&lt;img src="http://silverlight.net/emoticons/emotion-4.gif" alt="Stick out tongue" /&gt; &lt;/p&gt;&lt;p&gt;Best regards,&lt;/p&gt;&lt;p&gt;Jonathan &lt;br /&gt;&lt;/p&gt;</description></item><item><title>Simple popup menu</title><link>http://forums.silverlight.net/forums/thread/157220.aspx</link><pubDate>Wed, 07 Jan 2009 13:48:18 GMT</pubDate><guid isPermaLink="false">d0d632c8-a6f7-4f68-b0ce-26aaafd62132:157220</guid><dc:creator>magicmarky</dc:creator><slash:comments>0</slash:comments><comments>http://forums.silverlight.net/forums/thread/157220.aspx</comments><wfw:commentRss>http://forums.silverlight.net/forums/commentrss.aspx?SectionID=35&amp;PostID=157220</wfw:commentRss><description>&lt;p&gt;Here&amp;#39;s a simple way of creating a popup menu I thought I&amp;#39;d share as others may find it useful. What I wanted was a menu button, so clicking the button displayed a popup menu.&lt;/p&gt;
&lt;p&gt;Firstly create a user control, here&amp;#39;s the XAML:&lt;br /&gt;&amp;lt;UserControl x:Class=&amp;quot;SilverlightApplication1.PopupMenu&amp;quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns=&amp;quot;&lt;a href="http://schemas.microsoft.com/winfx/2006/xaml/presentation"&gt;http://schemas.microsoft.com/winfx/2006/xaml/presentation&lt;/a&gt;&amp;quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns:x=&amp;quot;&lt;a href="http://schemas.microsoft.com/winfx/2006/xaml"&gt;http://schemas.microsoft.com/winfx/2006/xaml&lt;/a&gt;&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Grid&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Rectangle Opacity=&amp;quot;0.0&amp;quot; Fill=&amp;quot;Azure&amp;quot; MouseLeftButtonUp=&amp;quot;Rectangle_MouseLeftButtonUp&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Popup Name=&amp;quot;Popup&amp;quot; IsOpen=&amp;quot;True&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Border BorderThickness=&amp;quot;1&amp;quot; BorderBrush=&amp;quot;Black&amp;quot; Background=&amp;quot;White&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;StackPanel Name=&amp;quot;MenuItems&amp;quot; Margin=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Border&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Popup&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Grid&amp;gt;&lt;br /&gt;&amp;lt;/UserControl&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;And the code for the user control:&lt;br /&gt;using System.Windows;&lt;br /&gt;using System.Windows.Controls;&lt;br /&gt;using System.Windows.Input;&lt;br /&gt;using System.Windows.Media;&lt;/p&gt;
&lt;p&gt;namespace SilverlightApplication1&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;public partial class PopupMenu : UserControl&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;public delegate void MenuSelectDelegate();&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;public PopupMenu(double x, double y)&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;InitializeComponent();&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Popup.HorizontalOffset = x;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Popup.VerticalOffset = y;&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;public void Add(string text, MenuSelectDelegate onSelect)&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;var textBlock = new TextBlock();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;textBlock.Text = text;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;textBlock.Margin = new Thickness(2);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;var border = new Border();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;border.Child = textBlock;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;border.Tag = onSelect;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;border.MouseEnter += new MouseEventHandler(Border_MouseEnter);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;border.MouseLeave += new MouseEventHandler(Border_MouseLeave);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;border.MouseLeftButtonUp += new MouseButtonEventHandler(Border_MouseLeftButtonUp);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;MenuItems.Children.Add(border);&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;private void Close()&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Popup.IsOpen = false;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Visibility = System.Windows.Visibility.Collapsed;&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;void Border_MouseEnter(object sender, MouseEventArgs e)&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Border border = (Border)sender;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;border.Background = new SolidColorBrush(Color.FromArgb(255, 0, 0, 128));&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;TextBlock textBlock = (TextBlock)border.Child;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;textBlock.Foreground = new SolidColorBrush(Colors.White);&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;void Border_MouseLeave(object sender, MouseEventArgs e)&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Border border = (Border)sender;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;border.Background = new SolidColorBrush(Colors.White);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;TextBlock textBlock = (TextBlock)border.Child;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;textBlock.Foreground = new SolidColorBrush(Colors.Black);&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;void Border_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Close();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Border border = (Border)sender;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;MenuSelectDelegate onSelect = (MenuSelectDelegate)border.Tag;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;onSelect();&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;private void Rectangle_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Close();&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;Here&amp;#39;s some code to display the popup menu in response to a button click, the menu is shown just below the button:&lt;br /&gt;private void DoSomething()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;MessageBox.Show(&amp;quot;Do something&amp;quot;);&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;private void DoSomethingElse()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;MessageBox.Show(&amp;quot;Do something else&amp;quot;);&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;private void Button_Click(object sender, RoutedEventArgs e)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;Button button = (Button)sender;&lt;br /&gt;&amp;nbsp;var transform = button.TransformToVisual(LayoutRoot);&lt;br /&gt;&amp;nbsp;var point = transform.Transform(new Point(0, 0));&lt;br /&gt;&amp;nbsp;var popupMenu = new PopupMenu(point.X, point.Y + button.Height);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;popupMenu.Add(&amp;quot;Do something&amp;quot;, DoSomething);&lt;br /&gt;&amp;nbsp;popupMenu.Add(&amp;quot;Do something else&amp;quot;, DoSomethingElse);&lt;br /&gt;&amp;nbsp;LayoutRoot.Children.Add(popupMenu);&lt;br /&gt;}&lt;br /&gt;&lt;/p&gt;</description></item></channel></rss>