如何在菜单栏

时间:2015-07-24 08:26:18

标签: wpf xaml wpf-controls

我想在菜单栏中浮动我的两个菜单项,但它不起作用。

这是我的代码:

    <Menu Height="30" Background="#ccc" VerticalAlignment="Top" Grid.ColumnSpan="2" Grid.RowSpan="2">
        <Menu.ItemsPanel>
            <ItemsPanelTemplate>
                <DockPanel HorizontalAlignment="Stretch"/>
            </ItemsPanelTemplate>
        </Menu.ItemsPanel>
        <MenuItem Header="New game" Click="NewGame"></MenuItem>
        <MenuItem Header="About" Click="AboutWindow" HorizontalAlignment="Right"></MenuItem>
        <MenuItem Header="Exit" Click="CloseWindow" HorizontalAlignment="Right"></MenuItem>
    </Menu>

我的菜单看起来像这样:

The menu

2 个答案:

答案 0 :(得分:1)

由于您使用DockPanel作为项目面板,因此请使用DockPanel.Dock代替HorizontalAlignment

<Menu Height="30" Background="#ccc" VerticalAlignment="Top" Grid.ColumnSpan="2" Grid.RowSpan="2">
    <Menu.ItemsPanel>
        <ItemsPanelTemplate>
            <DockPanel HorizontalAlignment="Stretch"/>
        </ItemsPanelTemplate>
    </Menu.ItemsPanel>
    <MenuItem Header="New game" Click="NewGame"></MenuItem>
    <MenuItem Header="About" Click="AboutWindow" DockPanel.Dock="Right"></MenuItem>
    <MenuItem Header="Exit" Click="CloseWindow" DockPanel.Dock="Right"></MenuItem>
</Menu>

您已经到了中途:P HorizontalAlignment不会影响DockPanel行为,因此默认情况下所有菜单项都停靠在左侧。您的最后一个菜单项显示在右侧,因为它的容器被拉伸以填充剩余空间,使菜单项空间有效地与右侧对齐(在这种情况下,HorizontalAlignment有效,但仅限于在菜单项如何在其容器内对齐,而不是如何在DockPanel

中进行布局

编辑 - 您可能需要更改&#34;关于&#34;和&#34;退出&#34;在XAML中定义,因为我不能正确记住优先级的工作原理。

答案 1 :(得分:1)

所以你只需要对你的XAML做一些改动:

<Menu Height="30" Background="#ccc" VerticalAlignment="Top" Grid.ColumnSpan="2" Grid.RowSpan="2">
    <Menu.ItemsPanel>
        <ItemsPanelTemplate>
            <DockPanel HorizontalAlignment="Stretch" LastChildFill="False" />
        </ItemsPanelTemplate>
    </Menu.ItemsPanel>
    <MenuItem Header="New game" Click="NewGame" DockPanel.Dock="Left" />
    <MenuItem Header="Exit" Click="CloseWindow" DockPanel.Dock="Right" />
    <MenuItem Header="About" Click="AboutWindow" DockPanel.Dock="Right" />
</Menu>

这就是结果:

Resulting menu

我希望这可以帮到你