2013-07-17 1 views
2

TabControl에 대한 사용자 지정 스타일이 있습니다. 스타일의 일부로 선택한 TabItem이 내용 상단에 나타나기를 원합니다. 현재 TabPanel에는 ZIndex 세트가 없으므로 콘텐츠 아래에 표시됩니다 (원하는 동작).TabControl - 내용 위에 TabItem을 표시합니다.

내가보기 엔 좋지 않은데, 선택한 TabItem이 내용 상단에 나타나게 만드는 것입니다. (바로 여기

<Trigger Property="IsSelected" Value="true"> 
    <Setter Property="Panel.ZIndex" Value="1"/> 
    <Setter Property="Background" TargetName="Bd" Value="#fff"/> 
</Trigger> 

내가 현재 가지고 (왼쪽)와 내가 좋아하는 것이 무엇 무엇의 이미지입니다 : 그 TabItemPanel.ZIndex을 설정하면 효과

<TabPanel x:Name="HeaderPanel" Panel.ZIndex="0" Grid.Column="0" Grid.Row="0" IsItemsHost="true" Margin="2,10,2,0" KeyboardNavigation.TabIndex="1" /> 

TabItem의 스타일 (중요 비트)이없는 것 같다). TabPanel의 오른쪽 그림자는 TabControl 템플릿 자체의 ContentPresenter을 둘러싼 Border에서 오는 것입니다. 따라서 선택한 TabItem이 그 위에 표시되기를 바랍니다!

enter image description hereenter image description here

추신 나는 그

+1

당신이 현재 가지고있는 것에 대해 당신이 예상하는 이미지를 추가 할 수 있습니까? – Viv

+0

@Viv 감사합니다 - 내 질문 업데이트 – Chris

+0

글쎄, 당신이 찾고있는 것은 사용자 정의 스타일이없는'TabControl'에서 저의 기본 동작 인 것 같습니다. 모든 WPF는 'TabItem'이 선택되었을 때 그 일을하는 것처럼 보입니다. Header는 방향과 높이를 기준으로 2 픽셀을 정상보다 많이 차지하게되어 결국 'Content'와의 경계선을 덮게됩니다. – Viv

답변

0

당신이 을 TabControl의 ControlTemplate을 변경할 수 없습니다 일을하려고 노력 포기 - 보너스 마크는 사람이 둥글게 TabPanel의 왼쪽 상단과 왼쪽 하단 모서리를 만드는 방법을 알고 있다면?

문제를 효과적으로 Z-위해 위를 강제로 기본 의 ControlTemplate (http://msdn.microsoft.com/en-us/library/ms754137(v=vs.110).aspx)가 ContentPresenter에탭 패널을 후에 선언 한 것 같다.

간단한 해결책은, 제공된 링크에서이 복사에 붙여 (일부 조정 지금 앉을 수 테두리 요구 될 수있다 탭 패널 순서와 테두리 요소를 반전 할 수있다 TabPanel 상단에 있습니다.보기를 차단합니다.) 당신의 탭 패널을들에 둥근 모서리를 들어

<Style TargetType="{x:Type TabControl}"> 

    <Setter Property="Template"> 

     <Setter.Value> 

      <ControlTemplate TargetType="{x:Type TabControl}"> 

       <Grid KeyboardNavigation.TabNavigation="Local"> 

        <Grid.RowDefinitions> 
         <RowDefinition Height="Auto"/> 
         <RowDefinition/> 
        </Grid.RowDefinitions> 

        <!-- VisualStateManager stuff... --> 

        <Border Grid.Row="1" ... > 

         <ContentPresenter x:Name="PART_SelectedContentHost" ContentSource="SelectedContent"/> 

        </Border> 

        <TabPanel Grid.Row="0" ... /> 

       </Grid> 

      </ControlTemplate> 

     </Setter.Value> 

    </Setter> 

</Style> 

, 나는 다시 탭 패널을 클래스의 의 ControlTemplate보고 권합니다.