如何在菜单栏中浮动两个项目
How to float two items in a menu bar
我想在菜单栏中浮动我的两个菜单项,但它不起作用。
这是我的代码:
<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>
我的菜单是这样的:
由于您使用 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
行为,因此默认情况下您的所有菜单项都停靠在左侧。您的最后一个菜单项显示在右侧只是因为它的容器被拉伸以填充剩余的 space,使菜单项 space 有效地向右对齐(在这种情况下,HorizontalAlignment
有影响,但仅影响菜单项在其容器内的对齐方式,而不影响它在 DockPanel
)
内的布局方式
EDIT - 您可能需要更改 "About" 和 "Exit" 在 XAML 中定义的顺序,因为我不知道我没记错优先级是如何工作的。
所以您只需要对 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>
这是结果:
希望对您有所帮助
我想在菜单栏中浮动我的两个菜单项,但它不起作用。
这是我的代码:
<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>
我的菜单是这样的:
由于您使用 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
行为,因此默认情况下您的所有菜单项都停靠在左侧。您的最后一个菜单项显示在右侧只是因为它的容器被拉伸以填充剩余的 space,使菜单项 space 有效地向右对齐(在这种情况下,HorizontalAlignment
有影响,但仅影响菜单项在其容器内的对齐方式,而不影响它在 DockPanel
)
EDIT - 您可能需要更改 "About" 和 "Exit" 在 XAML 中定义的顺序,因为我不知道我没记错优先级是如何工作的。
所以您只需要对 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>
这是结果:
希望对您有所帮助