具有ContextMenu属性的UserControl

时间:2011-06-27 12:03:11

标签: silverlight user-controls contextmenu

如果我想将ContextMenu只添加到UserControl中的一个子控件中,我如何在Silverlight中向UserControl添加一个ContextMenu属性(以及如何使用它)?

2 个答案:

答案 0 :(得分:2)

您需要安装Silverlight Toolkit,然后才能使用ContextMenuService

您可以将ContextMenu添加到UserControl,如下所示: -

 <UserControl ... blah blah...>
     <ContextMenuService.ContextMenu>
        <MenuItem Header="First Item" Click="FirstItem_Click" />
        <MenuItem Header="Second Item" Click="SecondItem_Click" />
     </ContextMenuService.ContextMenu>
     <Grid x:Name="LayoutRoot"> </Grid>
 </UserControl>

您可以在UserControl后面的代码中使用click事件处理程序来响应菜单项选择。

如果正在使用MVVM,那么MenuItem也可以绑定一个Command属性。

如果要为UI的特定区域提供特定菜单,可以将此ContextMenuService.ContextMenu附加属性添加到UserControl中的任何框架元素。

答案 1 :(得分:1)

使用SL4PopupMenu作为Nuget包可以轻松实现,也可以在此处下载:

http://sl4popupmenu.codeplex.com

然后,您只需将以下属性添加到UserControl:

PopupMenu _menu;

PopupMenu Menu
{
    get
    {
        return _menu;
    }
    set
    {
        _menu = value;
        _menu.AddTrigger(TriggerTypes.RightClick, ChildControl);
    }
}

然而,还有另一种方法可以通过菜单提供的选择器来实现这一点,并且它与jQuery中的选择器非常相似。因此,根据您的要求,您可能也想考虑这条路径。