WPF中具有水平子菜单的水平菜单

时间:2014-02-16 15:40:02

标签: wpf xaml menu menuitem

我一直在努力使用WPF Menu而我根本无法实现我想要的目标。

我尝试更改MenuMenuItem控件上的默认样式,但结果很糟糕。然后我尝试使用控件模板来设置它,但是,我想我已经意识到我的WPF技能还没有。

这是我想要的结果的图片:

enter image description here

有没有人可以指出我正确的方向?或者也许可以帮助我一些可以得到我想要的结果的xaml?

1 个答案:

答案 0 :(得分:3)

您可以将ItemsPanel设置为水平方向,如下所示:

<Menu.ItemsPanel>
    <ItemsPanelTemplate>
        <VirtualizingStackPanel Orientation="Horizontal" />
    </ItemsPanelTemplate>
</Menu.ItemsPanel>

因为MenuMenuItem都来自ItemsControl。

完整示例:

<Menu Width="100" 
        Height="30"
        Margin="10" 
        VerticalAlignment="Top"
        HorizontalAlignment="Left"
        Background="White"
        BorderBrush="Blue" 
        BorderThickness="1">

    <Menu.ItemsPanel>
        <ItemsPanelTemplate>
            <VirtualizingStackPanel Orientation="Horizontal" />
        </ItemsPanelTemplate>
    </Menu.ItemsPanel>

    <MenuItem Header="_ITEM1">
        <MenuItem.ItemsPanel>
            <ItemsPanelTemplate>
                <VirtualizingStackPanel Orientation="Horizontal"/>
            </ItemsPanelTemplate>
        </MenuItem.ItemsPanel>

        <MenuItem Header="_SUBMENU1" IsCheckable="true"/>
        <MenuItem Header="_SUBMENU2" IsCheckable="true"/>
        <MenuItem Header="_SUBMENU3" IsCheckable="true"/>

        <Separator/>
    </MenuItem>

    <MenuItem Header="_ITEM2">
        <MenuItem Header="Undo"/>
        <MenuItem Header="Redo"/>
        <Separator/>
        <MenuItem Header="Cut"/>
        <MenuItem Header="Copy"/>
        <MenuItem Header="Paste"/>
    </MenuItem>            
</Menu>

<强> Output

enter image description here