Silverlight 4:如何使用全新的右键上下文菜单





5.00/5 (6投票s)
本文演示了 Silverlight 4 全新的右键功能。
引言
在之前的文章中,我讨论了“如何使用通知 API”和“如何从默认摄像头捕获视频”。 在本文中,我将介绍另一个很酷的新功能:如何使用 Silverlight 4 全新的右键上下文菜单。
背景
Silverlight 4 现在支持右键单击。 您现在可以将“MouseRightButtonDown
”和“MouseRightButtonUp
”事件注册到任何 FrameworkElement
。 因此,无需使用 JavaScript 来禁用右键单击选项。 如果要禁用右键单击选项,只需实现这些事件即可。
e.Handled = true;
使用代码
现在,如果您想实现右键单击时的上下文菜单,请创建弹出上下文菜单并将其定位在正确的位置。 以下代码将创建上下文菜单
private Popup CreateContextMenu(Point currentMousePosition)
{
Popup popup = new Popup();
Grid popupGrid = new Grid();
Canvas popupCanvas = new Canvas();
popup.Child = popupGrid;
popupCanvas.MouseLeftButtonDown += (sender, e) => { HidePopup(); };
popupCanvas.MouseRightButtonDown += (sender, e) => { e.Handled = true; HidePopup(); };
popupCanvas.Background = new SolidColorBrush(Colors.Transparent);
popupGrid.Children.Add(popupCanvas);
popupGrid.Children.Add(CreateContextMenuItems(currentMousePosition));
popupGrid.Width = Application.Current.Host.Content.ActualWidth;
popupGrid.Height = Application.Current.Host.Content.ActualHeight;
popupCanvas.Width = popupGrid.Width;
popupCanvas.Height = popupGrid.Height;
return popup;
}
CreateContextMenuItems()
将添加一些上下文菜单项。 单击它将显示您单击的菜单项。 到目前为止,我只是谈论了自定义上下文菜单的创建。 现在我们必须在 Silverlight 应用程序中右键单击时显示它。 在我的示例中,我添加了一个 Border
控制,该控制已注册右键单击事件。 现在,请查看下面的代码,该代码负责显示上下文菜单
void brdRightClickZone_MouseRightButtonUp(object sender, MouseButtonEventArgs e)
{
txbMessage.Text = "Right Clicked";
Point currentMousePosition = e.GetPosition(LayoutRoot);
ShowPopup(currentMousePosition);
}
private void btnRightClick_MouseRightButtonDown(object sender, MouseButtonEventArgs e)
{
e.Handled = true;
}
在右键按下时,我设置 e.Handled = true
。 这确保不会显示默认的 Silverlight 上下菜单,并且右键释放实现将在当前鼠标位置弹出自定义上下文菜单。
接下来该做什么? 下载示例应用程序并实现您自己的逻辑来创建将在 Silverlight 应用程序中右键单击时打开的自定义上下文菜单。