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,如需转载请自行联系原作者