没有菜单的菜单

Mor*_*rti 2 wpf xaml menu menuitem

是否可以在菜单项中显示菜单项而无需将其分组到菜单中?

<MenuItem Header="toto">
    <MenuItem Header="Titi"></MenuItem>
</MenuItem>
Run Code Online (Sandbox Code Playgroud)

此示例显示菜单项toto,展开器图像,但当鼠标位于toto项目上时不显示子项目

任何的想法 ?

Mor*_*rti 7

一个解决方案:XAML

<MenuItem x:Name="MyMenu" MouseEnter="MenuItem_MouseEnter" MouseLeave="MenuItem_MouseLeave" Header="toto" >
    <MenuItem Header="titi"/>
</MenuItem>
Run Code Online (Sandbox Code Playgroud)

代码背后:

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;
}
Run Code Online (Sandbox Code Playgroud)

使用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>
Run Code Online (Sandbox Code Playgroud)

不能使用IsHighlighted false,因为当鼠标悬停在它上面时它仍然会突出显示.第2次编辑:当菜单打开时,显示showdialog窗口时出现错误.所以我们需要结合MouseEnter事件来防止这个bug.(错误是弹出窗口显示后子菜单不再打开)

  • 您可以使用样式和触发器,可能会更好一些. (3认同)