2012-04-21 11 views
3

어떻게 메뉴 컨트롤에 세로로 가운데 맞추기를 할 수 있습니까?메뉴 컨트롤의 가운데 머리글

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

헤더 텍스트 '파일'여전히 수직으로 (내가 중심을 원하는이다)을 중심으로하지 않습니다. 이 코드 센터링은 정확히 무엇입니까? 그것은 '열린'텍스트입니까?

[/ 편집]

답변

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> 

이 업데이트 : 이 재정의해야합니다 메뉴에서의 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의 this post에서 수집되었습니다.

+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)와이 [overview] (http://msdn.microsoft.com)를 참조하십시오. /en-us/library/ms745683.aspx). –

관련 문제