65.9K
CodeProject 正在变化。 阅读更多。
Home

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

2009年11月28日

CPOL

1分钟阅读

viewsIcon

57093

downloadIcon

1510

本文演示了 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 应用程序中右键单击时打开的自定义上下文菜单。

© . All rights reserved.