2
是否可以在菜单项中显示菜单项而无需将其分组到菜单中?没有菜单的Menuitem
<MenuItem Header="toto">
<MenuItem Header="Titi"></MenuItem>
</MenuItem>
此示例显示菜单项TOTO,扩展图像,但不显示子项时,鼠标在TOTO项目
任何想法?
是否可以在菜单项中显示菜单项而无需将其分组到菜单中?没有菜单的Menuitem
<MenuItem Header="toto">
<MenuItem Header="Titi"></MenuItem>
</MenuItem>
此示例显示菜单项TOTO,扩展图像,但不显示子项时,鼠标在TOTO项目
任何想法?
一个解决方案: XAML
<MenuItem x:Name="MyMenu" MouseEnter="MenuItem_MouseEnter" MouseLeave="MenuItem_MouseLeave" Header="toto" >
<MenuItem Header="titi"/>
</MenuItem>
后面的代码:
private void MenuItem_MouseEnter(object sender, System.Windows.Input.MouseEventArgs e)
{
this.MyMenu.IsSubmenuOpen = true;
}
private void MenuItem_MouseLeave(object sender, System.Windows.Input.MouseEventArgs e)
{
this.MyMenu.IsSubmenuOpen = false;
}
使用XAML(感谢HB的意见,第一次编辑):
<MenuItem.Style>
<Style TargetType="MenuItem">
<Style.Triggers>
<Trigger Property="IsHighlighted" Value="True">
<Setter Property="IsSubmenuOpen" Value="True"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="False">
<Setter Property="IsSubmenuOpen" Value="False"/>
</Trigger>
</Style.Triggers>
</Style>
</MenuItem.Style>
不能使用IsHighlighted错误,因为当鼠标不在它上面时它仍然被突出显示。 第二编辑:似乎有一个错误,当菜单打开时显示showdialog窗口。所以我们需要结合MouseEnter事件来防止这个bug。 (错误是子菜单在弹出显示后不再打开)
你可以使用一种风格和触发器,可能会更好一点。 – 2012-02-29 12:22:56
您发布的XAML对我来说看起来完全有效。当我测试它时,Titi项目会在需要一段时间后出现。当您尝试展开菜单时会发生什么?你的物体上有任何奇怪的样式吗? – 2012-02-29 09:51:38
@ bobsmith833:你是否真的把代码放在一些元素中,而不是一个菜单? – 2012-02-29 10:33:11
@ H.B。 - 啊,不,我没有!糟糕...自我注意:在尝试回答问题之前将大脑放入适当位置。看起来OP已经找到了解决方案。 – 2012-02-29 11:41:32