如何解决如何禁用子元素上的ContextMenu?
我想在网格中的子控件上禁用ContextMenu,但是当用户单击元素之间的空白区域中的网格时,必须显示ContextMenu。
我有此代码:
<Grid Background="Transparent">
<Grid.ContextMenu>
<ContextMenu>
<MenuItem Header="Item1"/>
<MenuItem Header="Item2"/>
</ContextMenu>
</Grid.ContextMenu>
<!-- Just example. In future will some collections -->
<StackPanel>
<Button Content="123" ContextMenuService.IsEnabled="False"/>
</StackPanel>
</Grid>
解决方法
UserControl.xaml
<UserControl.Resources>
<ContextMenu x:Key="AmazingMenu">
<MenuItem Header="Item1"/>
<MenuItem Header="Item2"/>
</ContextMenu>
</UserControl.Resources>
<Grid x:Name="MegaGrid" Background="Transparent" MouseRightButtonDown="Grid_MouseRightButtonDown">
<!-- Some controls -->
</Grid>
UserControl.xaml.cs
private void Grid_MouseRightButtonDown(object sender,MouseButtonEventArgs e)
{
var control = e.OriginalSource as Grid;
if (control.Name.Equals("MegaGrid"))
{
MegaGrid.ContextMenu = FindResource("AmazingMenu") as ContextMenu;
}
else
{
MegaGrid.ContextMenu = null;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。