如何在菜单控件中垂直居中标题?
这是我的尝试:
<MenuItem Header="File" StaysOpenOnClick="True" FontFamily="Arial" VerticalAlignment="Center">
<MenuItem Header="Open" Click="Open_Click" IsEnabled="True"/>
</MenuItem>
</Menu>
但它与左上角对齐。
我做错了什么?
[编辑]
我的整个菜单现在看起来像这样:
<Menu Canvas.Left="0" Canvas.Top="0" Name="menu1" Margin="0,0,0,384">
<MenuItem Header="File" StaysOpenOnClick="True" FontFamily="Arial" VerticalAlignment="Center">
<MenuItem Click="Open_Click" IsEnabled="True">
<MenuItem.Header>
<TextBlock Text="Open" VerticalAlignment="Center"/>
</MenuItem.Header>
</MenuItem>
</MenuItem>
</Menu>
标题文本'file'仍然没有垂直居中(这是我想要居中的)。 这段代码到底是什么?文本是否“打开”?
[/编辑]
答案 0 :(得分:9)
如果要格式化标题,则需要显式布局标题控件:
<MenuItem StaysOpenOnClick="True" FontFamily="Arial" VerticalAlignment="Center">
<MenuItem Click="Open_Click" IsEnabled="True">
<MenuItem.Header>
<TextBlock Text="Open" VerticalAlignment="Center"/>
</MenuItem.Header>
</MenuItem>
</Menu>
<强>更新强> 要在菜单中格式化MenuItem的位置,您需要覆盖Menu的ItemsPanelTemplate。默认情况下,菜单使用垂直WrapPanel,将项目置于顶部。使用您选择的面板(StackPanel,Grid,DockPanel等)替换默认设置,您可以根据需要将菜单项置于中心位置。这是一个例子:
<Menu Canvas.Left="0" Canvas.Top="0" Name="menu1" Margin="0,0,0,384">
<Menu.ItemsPanel>
<ItemsPanelTemplate>
<Grid/>
</ItemsPanelTemplate>
</Menu.ItemsPanel>
<MenuItem Header="File" StaysOpenOnClick="True" FontFamily="Arial" VerticalAlignment="Center" >
<MenuItem Header="Open" Click="Open_Click" IsEnabled="True"/>
</MenuItem>
</Menu>
从MSDN上的this post收集的信息。
答案 1 :(得分:0)
我想你想设置VerticalContentAlignment
。如果aligmnet仍然不符合您的喜好,则默认MenuItem
Template
可能存在问题,它可能无法绑定到属性,或者有一些边距或Paddings会移动标题。