WPF:ToolBar中嵌套的MenuItems

Der*_*k E 9 wpf toolbar menuitem

我正在为一个wpf应用程序开发一些XAML,但我遇到了一些麻烦,让它做我想做的事情.以下是我的XAML示例:

<!-- Tool Bar Tray -->
<ToolBarTray Name="toolBarTray1" DockPanel.Dock="Top">
    <!-- File And Edit Tools -->
    <ToolBar Name="toolBar1" Band="1" BandIndex="1">
        <!-- Regular Items -->
        <Button>A</Button>
        <Button>B</Button>
        <!-- Overflow Menu For Special Items -->
        <MenuItem ToolBar.OverflowMode="Always" Header="Special Items">
            <MenuItem Header="C"/>
            <MenuItem Header="D"/>
        </MenuItem>
    </ToolBar>
</ToolBarTray>
Run Code Online (Sandbox Code Playgroud)

当我点击工具栏的溢出按钮时,"特殊项目"菜单项旁边会出现一个小箭头,表示嵌套元素.但是,当我将鼠标悬停在"特殊项目"上或尝试单击它时,未显示MenuItems"C"和"D".

我希望MenuItem只能在菜单之外工作,但为了以防万一,我试着做直截了当的事情.在菜单中包含这些MenuItem,相反,为此菜单提供ToolBar.OverflowMode ="Always"属性会产生一些不需要的样式.箭头不再存在,需要单击"特殊项目"条目以激活子菜单,子菜单定位看起来有点偏差.

有谁知道发生了什么?

编辑:添加菜单到溢出正在产生我所要求的(大惊喜).我所追求的是一种将顶级标题和项目转换为子菜单级别的方法.我已经转向MSDN上的这个控件模板示例以获得解决方案(下面).

编辑,编辑:@gcores(评论讨论):真的吗?我错过了什么吗?

<ToolBar Name="toolBar1" Band="1" BandIndex="4"> 
    <!-- Displayed Buttons -->
    <Button>A</Button>
    <Button>B</Button>
    <!-- Special Items Menu -->
    <Menu ToolBar.OverflowMode="Always" >
        <MenuItem Style="{StaticResource MenuItemStyle}" Header="Special">
            <MenuItem Header="C"/>
            <MenuItem Header="D"/>
        </MenuItem>
    </Menu>
</ToolBar>
Run Code Online (Sandbox Code Playgroud)

这段代码对我不起作用.我必须点击"特殊"才能显示子菜单.

Sim*_*ead 0

我发现接近生成这种行为的唯一方法是在溢出中创建一个菜单,其中包含一个菜单项,其标题本身就是另一个名为“特殊项目”的菜单项并包含正确的子项。它按预期工作,但看起来很奇怪(这可以通过自定义模板来补救),而且看起来像是一个巨大的黑客攻击。我能想到的唯一“正确”的方法是制作自己的类似 MenuItem 的控件,当鼠标悬停在其上时会弹出 ContextMenu 或 Popup,因为我不认为自定义 ControlTemplate 可以更改的默认行为菜单,以便不需要单击顶级项目。