2011-10-28 7 views
0

창 왼쪽에 세로 메뉴가 있습니다. 그것의 항목은 바로 위 (위에)로 열리고 항목이 열려있을 때 사용자가 메뉴를 전체적으로 볼 수 없습니다.wpf에서 메뉴 정렬

메뉴의 오른쪽에 각 요소가 열리므로 메뉴의 나머지 부분과 열린 요소를 모두 볼 수 있습니다. 어떻게 할 수 있습니까? 변환 또는 트리거의 도움을받을 수 있습니까? 그러니 그냥 확실하게하려면 MenuItem의 '수학'은 위의 WPF 메뉴에 당신이 메뉴의 ItemsPanel가 수직 StackPanel에 또는 뭔가 그래서 '수학 될 것으로 변경

<MenuItem Header="Maths"> 
    <MenuItem Background="LightGray" Header="Add"/> 
    <MenuItem Background="LightGray" Header="Subtract"/> 
    <MenuItem Background="LightGray" Header="Multiply"/> 
    <MenuItem Background="LightGray" Header="Divide"/> 
</MenuItem> 
+3

코드는 실제로별로 알려주지 않습니다. 스크린 샷은 어떻습니까? 그래서 우리는 그 문제를 볼 수 있습니다 ... –

+0

나는 그것이 분명하다고 생각합니다. 메뉴 항목은 오른쪽에서 열리지 만 나머지 메뉴는 숨겨집니다. 내용이 바로 나타납니다 (왼쪽의 세로 메뉴이므로). – arjacsoh

답변

1

: 여기

몇 가지 코드 '는 다른 형제 메뉴 항목의 위/아래입니다. 그렇다면 무슨 일이 일어나는지 TopIteHeader (자식 항목이 있고 메뉴 내에 직접있는 MenuItem) 역할을하는 MenuItem의 기본 템플릿은 팝업이 메뉴 항목 아래 (또는 위)에 있도록하는 것입니다. 아마도 이러한 메뉴 항목을 다시 기록하고 싶을 것입니다. hacky (및 못생긴 대안)에서는 SubmenuHeader 역할 메뉴 항목 (즉 하위 항목이 있고 다른 MenuItem 내에있는 MenuItem)에 사용할 템플릿을 사용합니다. 예 :

<Menu HorizontalAlignment="Left"> 
    <Menu.ItemsPanel> 
     <ItemsPanelTemplate> 
     <StackPanel /> 
     </ItemsPanelTemplate> 
    </Menu.ItemsPanel> 
    <Menu.ItemContainerStyle> 
     <Style TargetType="MenuItem"> 
     <Style.Triggers> 
      <Trigger Property="Role" Value="TopLevelHeader"> 
      <Setter Property="Template" Value="{DynamicResource {x:Static MenuItem.SubmenuHeaderTemplateKey}}" /> 
      </Trigger> 
      <Trigger Property="Role" Value="TopLevelItem"> 
      <Setter Property="Template" Value="{DynamicResource {x:Static MenuItem.SubmenuItemTemplateKey}}" /> 
      </Trigger> 
     </Style.Triggers> 
     </Style> 
    </Menu.ItemContainerStyle> 
    <MenuItem Header="Just Item" /> 
    <MenuItem Header="Maths"> 
     <MenuItem Header="Add" /> 
     <MenuItem Header="Subtract" /> 
    </MenuItem> 
    <MenuItem Header="Misc"> 
     <MenuItem Header="Other" /> 
    </MenuItem> 
    </Menu> 
+0

그래, 그게 다야. 코드 작동 방식에 대해 자세히 설명하는 관련 소스 (예 : 자습서)는 어디에서 찾을 수 있습니까? 어쨌든 아주 좋습니다. – arjacsoh

+0

당신이 말하는 코드가 확실하지 않습니다. 만약 당신이 menuitem 템플릿과 같은 것들이 설정 되었다면 가장 좋은 방법은 Snoop (snoopwpf.codeplex.com/)과 같은 것을 사용하여 시각적 트리를 검사하거나 ms 템플릿에 대한 정보를 검토하는 것입니다. http://msdn.microsoft.com/en-us/library/ms747082(v=vs.85).aspx). 이 경우 '수학'메뉴 항목에서 스눕했다면 팝업의 위치가 '하단'으로 설정되었음을 알 수 있습니다. – AndrewS