6

如何在菜单控件中垂直居中标题?

这是我的尝试:

<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>

标题文本“文件”仍然没有垂直居中(这是我想要居中的)。这段代码到底是什么?是“开放”的文字吗?

[/编辑]

4

2 回答 2

10

如果要格式化标题,则需要显式布局标题控件:

<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 在菜单中的位置,您需要覆盖菜单的 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 上的这篇文章收集的信息。

于 2012-04-21T22:33:12.100 回答
0

我想你会想要设置VerticalContentAlignment. 如果 alignmnet 仍然不符合您的喜好,则可能是 default 有问题MenuItem Template,它可能没有绑定到属性,或者有一些边距或填充物会移动标题。

于 2012-04-21T18:09:30.790 回答