Silverlight Toolkit中ContextMenu的用法

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值