2012-04-21 1 views
3

Как вертикально центрировать заголовок в элементе управления меню?Центральный заголовок в управлении меню

Это была моя попытка:

<MenuItem Header="File" StaysOpenOnClick="True" FontFamily="Arial" VerticalAlignment="Center"> 
       <MenuItem Header="Open" Click="Open_Click" IsEnabled="True"/> 
      </MenuItem> 
     </Menu> 

Но его выровнены в левом верхнем углу.

Что я делаю неправильно?

[EDIT]

Мое все меню теперь выглядит следующим образом:

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

Текст заголовка «Файл» еще не выровнены по вертикали (что я хочу, чтобы центр). Что это за центрирование кода? Это текст «открыт»?

[/ EDIT]

ответ

8

Если вы хотите отформатировать заголовок вам необходимо явно макет управления заголовка:

<MenuItem StaysOpenOnClick="True" FontFamily="Arial" VerticalAlignment="Center"> 
     <MenuItem Click="Open_Click" IsEnabled="True"> 
      <MenuItem.Header> 
       <TextBlock Text="Open" VerticalAlignment="Center"/> 
      </MenuItem.Header> 
     </MenuItem> 
    </Menu> 

Update: Чтобы отформатировать позицию 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> 

Информация, собранная из this post на MSDN.

+2

привет, я редактировал свое оригинальное сообщение. Текст заголовка меню не центрируется этим спокойствием кода. Может, ты меня неправильно понял? – Yustme

+0

Вы правы, я неправильно понял вас, но я обновил свой ответ тем, что, как я думаю, вы ищете. Узнал что-то новое сегодня, так что спасибо за вопрос! –

+0

привет, спасибо, это сделал трюк. – Yustme

0

Я думаю, что вы хотите установить VerticalContentAlignment. Если aligmnet по-прежнему не по вашему вкусу, возможно, существует проблема с по умолчанию MenuItemTemplate, он может не связываться с этим свойством или есть некоторые поля или прокладки, которые сдвигают заголовок.

+0

Привет, Я тоже использовал это свойство, и я ничего не делал с шаблонами. У вас есть пример с тем, что вы точно подразумеваете под шаблоном? – Yustme

+0

@Yustme: Это свойство, определяющее, из каких внутренних элементов создается элемент управления и, следовательно, что-то похожее. См. [Документы о свойствах] (http://msdn.microsoft.com/en-us/library/system.windows.controls.control.template.aspx) и этот [обзор] (http://msdn.microsoft.com). /en-us/library/ms745683.aspx). –