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>

ヘッダー テキスト 'file' はまだ垂直方向に中央揃えされていません (これは私が中央揃えにしたいものです)。このコードセンタリングとは正確には何ですか? それは「開く」というテキストですか?

[/編集]

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>

更新: Menu 内の MenuItem の位置をフォーマットするには、Menu の ItemsPanelTemplate をオーバーライドする必要があります。デフォルトでは、Menu は項目を上に揃える垂直の 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。それでもaligmnetが気に入らない場合は、デフォルトMenuItem Templateに問題がある可能性があります。プロパティにバインドされていないか、ヘッダーをシフトするマージンまたはパディングがあります。

于 2012-04-21T18:09:30.790 に答える