我想在菜单栏中浮动我的两个菜单项,但它不起作用。
这是我的代码:
<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>
我的菜单看起来像这样:
答案 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>
这就是结果:
我希望这可以帮到你