如果我想将ContextMenu只添加到UserControl中的一个子控件中,我如何在Silverlight中向UserControl添加一个ContextMenu属性(以及如何使用它)?
答案 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中的选择器非常相似。因此,根据您的要求,您可能也想考虑这条路径。