微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐