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)
这段代码对我不起作用.我必须点击"特殊"才能显示子菜单.
我发现接近生成这种行为的唯一方法是在溢出中创建一个菜单,其中包含一个菜单项,其标题本身就是另一个名为“特殊项目”的菜单项并包含正确的子项。它按预期工作,但看起来很奇怪(这可以通过自定义模板来补救),而且看起来像是一个巨大的黑客攻击。我能想到的唯一“正确”的方法是制作自己的类似 MenuItem 的控件,当鼠标悬停在其上时会弹出 ContextMenu 或 Popup,因为我不认为自定义 ControlTemplate 可以更改的默认行为菜单,以便不需要单击顶级项目。
| 归档时间: |
|
| 查看次数: |
12634 次 |
| 最近记录: |