在WP7开发中,没有桌面应用程序的右键菜单,但是同样有弹出菜单可以使用,通过长按操作可以弹出菜单,一般用于Pin To Start
在WP7中,大部分控件都支持弹出菜单功能
首先需要安装
Silverlight for Windows Phone Toolkit,可以到微软下载中心下载
然后把控件添加到工具栏
在Xaml文件头添加命名空间,下面可以通过toolkit名字引用
xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"
然后在控件内部如下声明(以HubTile控件为例,其他控件相似)
<toolkit:HubTile Source="back.png" Tap="hubTile1_Tap" Title="瓷片" Height="173" HorizontalAlignment="Left" Margin="12,23,0,0" Name="hubTile1" VerticalAlignment="Top" Width="173" >
<toolkit:ContextMenuService.ContextMenu>
<toolkit:ContextMenu VerticalOffset="0" IsZoomEnabled="True" >
<toolkit:MenuItem Header="钉到【开始】界面" Click="PinItem_Click" Name="menuItemYuer"/>
</toolkit:ContextMenu>
</toolkit:ContextMenuService.ContextMenu>
</toolkit:HubTile>
MenuItem为控件项,然后添加相应的响应函数即可
在C#代码中
ContextMenu menu = ContextMenuService.GetContextMenu(button1); //获得控件的弹出菜单
MenuItem item = new MenuItem();
item.Name = "itemName";
item.Header = "header";
item.Click += new RoutedEventHandler(item_Click);
menu.Items.Add(item); //添加菜单项
也可以通过MenuItem获取到该菜单对应的项,例如在点击菜单项的时候,通过menuItem的DataContext属性访问对应的项NoteItem;
private void menuItem_Click(object sender, RoutedEventArgs e)
{
MenuItem menuItem = sender as MenuItem;
NoteItem item = (menuItem.DataContext as NoteItem);
}
最后补充菜单的分隔符
在Xaml中
<toolkit:Separator Background="Blue" />
c#代码中
ContextMenu contextMenu = ContextMenuService.GetContextMenu(this.rectangle1);
contextMenu.Items.Add(new Separator());