ContextMenu的使用

简介:

ContextMenu的使用

下面代码的效果是右键单击图片时,显示菜单。当单击菜单的某项时,执行相应的命令。

Image.RightTapped += new  RightTappedEventHandler(Image_RightTapped);

 

async void  Image_RightTapped( object  sender, RightTappedRoutedEventArgs e)
{
     var  menu = new  PopupMenu();
     menu.Commands.Add( new  UICommand( "Open with" , (command) =>
         {
             Display.Text = "'"  + command.Label + "' selected" ;
         }));
     menu.Commands.Add( new  UICommand( "Save attachment" , (command) =>
     {
         Display.Text = "'"  + command.Label + "' selected" ;
     }));
 
     var  chosenCommand = await menu.ShowForSelectionAsync(GetElementRect((FrameworkElement)sender));
     if  (chosenCommand == null )
     {
         Display.Text = "Context menu dismissed" ;
     }
}

  

Rect GetElementRect(FrameworkElement element)
{
     GeneralTransform buttonTransform = element.TransformToVisual( null );
     Point point = buttonTransform.TransformPoint( new  Point());
     return  new  Rect(point, new  Size(element.ActualWidth, element.ActualHeight));
}

  效果图:

 

2、文本的ContextMenuOpening事件

Scenario2TextBox.ContextMenuOpening += new ContextMenuOpeningEventHandler(Scenario2TextBox_ContextMenuOpening);

async void  Scenario2TextBox_ContextMenuOpening( object  sender, ContextMenuEventArgs e)
{
     // Create a menu and add commands specifying an id value for each instead of a delegate.
     var  menu = new  PopupMenu();
     menu.Commands.Add( new  UICommand( "Copy" , null , 1));
     menu.Commands.Add( new  UICommandSeparator());
     menu.Commands.Add( new  UICommand( "Highlight" , null , 2));
     menu.Commands.Add( new  UICommand( "Look up on dictionary" , null , 3));
 
     // We don't want to obscure content, so pass in a rectangle representing the sender of the context menu event.
     // We registered command callbacks; no need to await and handle context menu completion
     var  chosenCommand = await menu.ShowForSelectionAsync(GetElementRect((FrameworkElement)sender));
     if  (chosenCommand != null )
     {
         switch  (( int )chosenCommand.Id)
         {
             case  1:
                 Output2Text.Text = "'"  + chosenCommand.Label + "'("  + chosenCommand.Id.ToString() + ") selected" ;
                 break ;
 
             case  2:
                 Output2Text.Text = "'"  + chosenCommand.Label + "'("  + chosenCommand.Id.ToString() + ") selected" ;
                 break ;
 
             case  3:
                 Output2Text.Text = "'"  + chosenCommand.Label + "'("  + chosenCommand.Id.ToString() + ") selected" ;
                 break ;
         }
     }
     else
     {
         Output2Text.Text = "Context menu dismissed" ;
     }
}

  效果图:

效果是右键文本框时,弹出菜单。如上图。

 


本文转自Work Hard Work Smart博客园博客,原文链接:http://www.cnblogs.com/linlf03/archive/2012/03/27/2403972.html,如需转载请自行联系原作者

目录
相关文章
|
7月前
|
Python
Combobox
在Tkinter中,下拉菜单(Combobox)是一种常用的组件,它允许用户从一组预定义的选项中选择一个或多个值。下面是关于如何在Tkinter中使用下拉菜单组件的详细说明:
67 1
|
6月前
|
XML Java Android开发
15. 【Android教程】按钮 Button/ImageButton
15. 【Android教程】按钮 Button/ImageButton
94 2
|
存储 C++ 开发者
QListWidget和QListView的使用和item点击事件
QListWidget和QListView的使用和item点击事件
ListView onItemLongClick 弹出ContextMenu
ListView onItemLongClick 弹出ContextMenu
124 0
双击事件与单击事件的那些事
双击事件与单击事件的那些事
541 0
ListView、TreeView和DataGrid。
原文:ListView、TreeView和DataGrid。 1、ListView。 ListView继承自简单的没有特色的ListBox,并使用View属性进行扩展。增加了对基于列显示的支持,并增加了快速切换视图或显示模式的能力,而不需要重新绑定数据以及重新构建列表。
1261 0
|
JavaScript 前端开发