ContextMenu, 可以认为是上下文菜单,在某控件上长按时出现。
如下图:
它的使用方法,可以有两种。
第一种,通过代码来实现,利用ContextMenuService
ContextMenu menu = new ContextMenu();
MenuItem menuItem1 = new MenuItem();
menuItem1.Header = "This is Menu Item 1";
menuItem1.Click += new RoutedEventHandler(MenuItem_Click);
menu.Items.Add(menuItem1);
MenuItem menuItem2 = new MenuItem();
menuItem2.Header = "This is Menu Item 2";
menuItem2.Click += new RoutedEventHandler(MenuItem_Click);
menu.Items.Add(menuItem2);
ContextMenuService.SetContextMenu(rc, menu); //这里的rc,表示的是矩形框的名字,也可以说是ContextMenu依附的那个控件的名字。
第二种,通过修改xaml文件来实现
首先,需要添加命名空间:xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"
其次,添加如下内容
<Rectangle Width="100" Height="100" Fill="Red">
<toolkit:ContextMenuService.ContextMenu>
<toolkit:ContextMenu>
<toolkit:MenuItem Header="this is menu item 1" Click="MenuItem_Click" />
<toolkit:MenuItem Header="this is menu item 2" Click="MenuItem_Click" />
<toolkit:MenuItem Header="this is menu item 3" Click="MenuItem_Click" />
</toolkit:ContextMenu>
</toolkit:ContextMenuService.ContextMenu>
</Rectangle>
实际效果:
另外,在使用ContextMenu时会注意到模拟器上背景内容的缩放,这个可以通过IsZoomEnabled属性来控制。将其设置为False时,可以停止自动的缩放动画。
<toolkit:ContextMenu IsZoomEnabled="False"> --------------这是在21日谈中讲到的
实际在模拟器上尝试的结果是,这个属性的设置并没有起作用。不知道什么原因。
更新:
IsZoomEnabled这个属性在button控件上是起作用的。当在button上添加ContextMenu时,设置IsZoomEnabled=False,这时的背景就没有了自动缩放效果。
一篇更为详尽的介绍ContextMenu的文章:
http://www.windowsphonegeek.com/articles/WP7-ContextMenu-in-depth--Part1-key-concepts-and-API