2009-05-29 3 views

답변

2

해당 위치에 내용을 배치 할 수있는 쉬운 방법이 없습니다,하지만 방법이있다. 이렇게하려면 TabControl의 기본값 인 ControlTemplate을 재정의해야합니다.

대부분의 시스템 테마는 Grid과 같이에서 (탭이 있습니다)이 TabPanel 및 탭 내용을 넣어 : 그래서 당신은 그리드에 다른 ContentControl을 추가 할 수

<ControlTemplate TargetType="{x:Type TabControl}"> 
        <Grid KeyboardNavigation.TabNavigation="Local" 
          SnapsToDevicePixels="true" 
          ClipToBounds="true"> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition x:Name="ColumnDefinition0"/> 
          <ColumnDefinition x:Name="ColumnDefinition1" 
               Width="Auto"/> 
         </Grid.ColumnDefinitions> 
         <Grid.RowDefinitions> 
          <RowDefinition x:Name="RowDefinition0" 
              Height="Auto"/> 
          <RowDefinition x:Name="RowDefinition1" 
              Height="*"/> 
         </Grid.RowDefinitions> 
         <TabPanel x:Name="HeaderPanel" 
            Panel.ZIndex ="1" 
            KeyboardNavigation.TabIndex="1" 
            Grid.Column="0" 
            Grid.Row="0" 
            Margin="2,2,2,0" 
            IsItemsHost="true"/> 

         <Border x:Name="ContentPanel" 
           BorderThickness="0,0,1,1" 
           BorderBrush="#D0CEBF" 
           KeyboardNavigation.TabNavigation="Local" 
           KeyboardNavigation.DirectionalNavigation="Contained" 
           KeyboardNavigation.TabIndex="2" 
           Grid.Column="0" Grid.ColumnSpan="2" 
           Grid.Row="1"> 
... 

... 

... 
         </Border> 
        </Grid> 
... 
       </ControlTemplate> 

과는 결합이 사용자 지정 연결 속성. 기본 ControlTemplates에는 오버 플로우 처리를 제어하는 ​​많은 트리거가 있으며 추가 UI 요소가이를 방해하지 않는지 확인해야합니다.

당신은 당신을 TabControl 방향 또는 오버 플로우 처리하지 않는 경우,하지만, 상당히 빨리 이런 식으로 뭔가를 얻을 수 있어야합니다 :

Three TabItems with a Red Border and TextBlock http://img35.imageshack.us/img35/3237/tabpanelexample.png

행운을 빕니다!