我试图在分割按钮下方有一个下拉菜单。其中一些menuItem应该有子菜单项。如果你想要一个例子,点击Firefox中的书签按钮(右上角)。带菜单项和子菜单项的Xceed分割按钮
我无法使用Menu,因为它总是水平放置。所以我决定用一个StackPanel:
<Window x:Class="WpfApplication3.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
Title="MainWindow" Height="350" Width="525">
<Grid>
<xctk:SplitButton Content="SplitButton" BorderThickness="1" BorderBrush="Black" Margin="0,0,408,290">
<xctk:SplitButton.DropDownContent>
<StackPanel Width="161" HorizontalAlignment="Left">
<MenuItem Header="MenuItem1" HorizontalAlignment="Left" Width="517">
<MenuItem.Items>
<MenuItem Header="submenuItem1"/>
<MenuItem Header="submenuItem2"/>
</MenuItem.Items>
</MenuItem>
<MenuItem Header="MenuItem2"/>
<MenuItem Header="MenuItem3"/>
</StackPanel>
</xctk:SplitButton.DropDownContent>
</xctk:SplitButton>
</Grid>
这里的问题是,子菜单项显示不出来。他们甚至没有旁边的小箭头。你可以在没有SplitButton的情况下执行此操作,只需将其中的堆栈面板和所有内容都留下,就会遇到同样的问题。我试着把父菜单项放在它自己的标签中,但是我希望子菜单项出现在它们父项的右侧(就像firefox例子一样:假设你的Firefox窗口没有最大化,并且你已经允许足够的屏幕空间以显示该项目)。
alrh's CustomControl是相当有帮助的。我有一些麻烦把它带到我的项目,所以我最终只是把它作为一个DLL。 – NickLokarno