2010-01-08 9 views
0

탭 컨트롤의 각 탭에 텍스트를 세로로 표시하려고합니다. 나는 결코 통제 장치에 투자하지 않고 무엇을하지 않았는가하는 것이고, 나는 완전히 갇혀있다. 왼쪽으로 회전 한 것처럼 텍스트를 표시 할 수있는 코드를 발견했습니다. 탭에서 오른쪽 (수직)으로 회전 한 것처럼 표시하고 싶습니다. 난 당신이 XAML을 사용한다고 가정오른쪽 맞춤 TabControl의 세로 텍스트

Protected Sub OnDrawItem(ByVal sender As Object, ByVal e As DrawItemEventArgs) Handles TabControl1.DrawItem 
    'MyBase.OnDrawItem(e)' 
    Dim tc As TabControl = DirectCast(sender, TabControl) 
    Dim g As Graphics = e.Graphics 
    Dim rectf As RectangleF 
    Dim isVertical As Boolean = (tc.Alignment > TabAlignment.Bottom) 
    Dim off As Integer = 1 : If (e.State And sel) = sel Then off = -1 
    Dim textFormat As New StringFormat(StringFormatFlags.NoClip _ 
           Or StringFormatFlags.NoWrap) 
    With textFormat 
     .HotkeyPrefix = System.Drawing.Text.HotkeyPrefix.Show 
     .Alignment = StringAlignment.Center 
     .LineAlignment = StringAlignment.Center 
    End With 


    With e.Bounds 
     If isVertical Then 
      ' tabs are aligned left or right' 
      If tc.Alignment = TabAlignment.Left Then 
       Dim m As New System.Drawing.Drawing2D.Matrix 
       m.Translate(0, .Height - tc.TabPages(0).Top) 
       m.RotateAt(270, New PointF(.X, .Y)) 
       g.Transform = m 
       rectf = New RectangleF(.Left - tc.TabPages(0).Top, .Top + off, _ 
             .Height, .Width) 
      ElseIf tc.Alignment = TabAlignment.Right Then 
       'Dim m As New System.Drawing.Drawing2D.Matrix' 
       'm.Translate(0, .Height - tc.TabPages(0).Top)' 
       'm.RotateAt(270, New PointF(.X, .Y))' 
       'g.Transform = m' 
       'rectf = New RectangleF(.Left - tc.TabPages(0).Top, .Top + off, _' 
       '      .Height, .Width)' 
       ' Here is where the tab should go to rotate the text about 180 degrees' 
      End If 
     Else 
      ' tabs are aligned top or bottom' 
      rectf = New RectangleF(.X, .Y + off, .Width, .Height) 
     End If 
    End With 


    Dim col As Color 
    Select Case (e.State And notsf) 
     Case DrawItemState.Disabled 
      col = SystemColors.GrayText 
     Case DrawItemState.HotLight 
      col = SystemColors.HotTrack 
     Case Else 
      col = SystemColors.MenuText 
    End Select 


    g.DrawString(tc.TabPages(e.Index).Text, _ 
       tc.Font, _ 
       New SolidBrush(col), _ 
       rectf, _ 
       textFormat) 

    If isVertical Then g.ResetTransform() 

    If (e.State And selfoc) = selfoc Then 
     ControlPaint.DrawFocusRectangle(g, _ 
        [Rectangle].Inflate(e.Bounds, -1, -1)) 
    End If 
    textFormat.Dispose() 
End Sub 

답변

0

VB 나 WinForms를 사용하지 않으므로 다음은 코드에 포함되지 않으며 몇 가지 추측을 포함합니다. 스크린 샷없이 설명에서 원하는 것과 다른 점을 아는 것도 어렵습니다. 탭의 캡션 텍스트가 다른 방향으로 180도 회전되도록하려는 생각에 맞습니까? 예를 들어, 탭의 왼쪽 또는 탭의 오른쪽에있는 텍스트의 "위쪽"중 어느 것이 든 지금은 그렇지 않습니다. 분기 If tc.Alignment = TabAlignment.Right Then ... 텍스트에서

은 RotateAt 호출에 의해 회전된다

m.RotateAt(270, New PointF(.X, .Y)) 

당신은 다른 방향으로 회전 텍스트를 가지고 90-270을 변경할 수 있습니다.

(이 같은 변환 행렬을 설정에 대해 잘 알고 있습니까? 동일한 원리는 OpenGL 또는 DirectX를 프로그래밍에 적용됩니다. 그렇지 않으면, 코멘트 나는/링크를 설명 할 것이다.)

그냥 다음 기회 그렇게한다면 텍스트가 보이지 않을 것입니다. 그 이유는 그리는 비트 맵을 중심으로 회전하기 때문입니다. 텍스트의 시작 부분이 오른쪽에 오도록 텍스트를 번역해야합니다. 위에서 언급 한 추측은 다음과 같습니다. 사용중인 그래픽 프레임 워크의 좌표계에 익숙하지 않아 어떤 방향으로 변환해야할지 모르겠습니다. 나는 당신에게 작업 코드를 줄 수는 없지만, Visual Studio와 .NET Winforms 컨트롤을 가지고 있지 않아서 미안하다. 나는이 라인들을 따라 이미 뭔가하고있는 것을 볼 수있다 :

m.Translate(0, .Height - tc.TabPages(0).Top) 

X 좌표 (0)가 .Width 또는 .Width - [text height, calculate this]이므로이 값을 변경해야하며 Y 좌표의 텍스트 너비도 고려해야 할 것입니다. (Text "height"와 "width"는 텍스트가 수평/보통으로 그려지는 것처럼 보입니다.) 꽤 확신합니다 .Net의 드로잉 프레임 워크에는 GraphicsTextHeight(...)TextWidth(...) 메쏘드가 포함되어있을 것입니다. 그들이 쉽게 찾을 수 있는지 :) TextRect() 아마도?

(내가 PC에 앉아서이 코드를 작성하여 큰 비트 맵 중간에 텍스트를 회전하도록 했으므로 왼쪽 상단에 있도록 수정하십시오. 탭 크기의 직사각형 안의 올바른 위치에 비트 맵을 배치 한 다음 코드를 탭 그리기 방법으로 이동합니다. 작은 탭을 가지고 실행하고 "내 텍스트는 어디에 있습니까?"라는 모든 문제를 저장합니다."그것은 잘못된 좌표에서 그려지기 때문에 보이지 않습니다.)

0

가 이러한 스타일 추가 스타일을 통해이 달성 : 골격 코드는 다음과 같습니다

<!-- Simple Splitter Style --> 
    <Style x:Key="SimpleSplitterStyle" TargetType="controls:GridSplitter"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="controls:GridSplitter"> 
        <Grid x:Name="Root" IsHitTestVisible="{TemplateBinding IsEnabled}"> 
         <Rectangle Fill="{TemplateBinding Background}" StrokeThickness="0"/> 
        </Grid> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

    <!-- Tab Item Header (Right) --> 
    <Style x:Key="RightTabItemHeader" TargetType="ContentControl"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="ContentControl"> 
        <ContentPresenter Cursor="{TemplateBinding Cursor}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" ContentTemplate="{TemplateBinding ContentTemplate}"> 
         <layout:LayoutTransformer > 
          <layout:LayoutTransformer.LayoutTransform> 
           <RotateTransform Angle="90"/> 
          </layout:LayoutTransformer.LayoutTransform> 
          <ContentPresenter Margin="5,0,5,0" /> 
         </layout:LayoutTransformer> 
        </ContentPresenter> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

    <!-- Tab Item Header (Left) --> 
    <Style x:Key="LeftTabItemHeader" TargetType="ContentControl"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="ContentControl"> 
        <ContentPresenter Cursor="{TemplateBinding Cursor}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" ContentTemplate="{TemplateBinding ContentTemplate}"> 
         <layout:LayoutTransformer > 
          <layout:LayoutTransformer.LayoutTransform> 
           <RotateTransform Angle="-90"/> 
          </layout:LayoutTransformer.LayoutTransform> 
          <ContentPresenter Margin="5,0,5,0" /> 
         </layout:LayoutTransformer> 
        </ContentPresenter> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

    <!-- Tab Item Style --> 
    <Style x:Key="TabItemStyle" TargetType="controls:TabItem"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="controls:TabItem"> 
        <Grid x:Name="Root"> 
         <Grid x:Name="TemplateTopSelected" Visibility="Collapsed" Canvas.ZIndex="1"> 
          <Border Margin="-2,-2,-2,0" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="1,1,1,0" CornerRadius="3,3,0,0"> 
           <Border BorderBrush="#FFFFFFFF" BorderThickness="1" CornerRadius="1,1,0,0"> 
            <Border.Background> 
             <LinearGradientBrush EndPoint=".7,1" StartPoint=".7,0"> 
              <GradientStop Color="#FFFFFFFF" Offset="0"/> 
              <GradientStop Color="#F9FFFFFF" Offset="0.375"/> 
              <GradientStop Color="#E5FFFFFF" Offset="0.625"/> 
              <GradientStop Color="#C6FFFFFF" Offset="1"/> 
             </LinearGradientBrush> 
            </Border.Background> 
            <Grid> 
             <Rectangle Fill="#FFFFFFFF" Margin="0,0,0,-2"/> 
             <ContentControl x:Name="HeaderTopSelected" FontSize="{TemplateBinding FontSize}" Foreground="{TemplateBinding Foreground}" IsTabStop="False" Cursor="{TemplateBinding Cursor}" HorizontalAlignment="{TemplateBinding HorizontalAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalAlignment}"/> 
            </Grid> 
           </Border> 
          </Border> 
          <Border x:Name="FocusVisualTop" Margin="-2,-2,-2,0" IsHitTestVisible="false" Visibility="Collapsed" BorderBrush="#FF6DBDD1" BorderThickness="1,1,1,0" CornerRadius="3,3,0,0"/> 
          <Border x:Name="DisabledVisualTopSelected" Margin="-2,-2,-2,0" IsHitTestVisible="false" Opacity="0" Background="#8CFFFFFF" CornerRadius="3,3,0,0"/> 
         </Grid> 
         <Grid x:Name="TemplateTopUnselected" Visibility="Collapsed"> 
          <Border x:Name="BorderTop" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="1" CornerRadius="3,3,0,0"> 
           <Border x:Name="GradientTop" BorderBrush="#FFFFFFFF" BorderThickness="1" CornerRadius="1,1,0,0"> 
            <Border.Background> 
             <LinearGradientBrush EndPoint=".7,1" StartPoint=".7,0"> 
              <GradientStop Color="#FFFFFFFF" Offset="0"/> 
              <GradientStop Color="#F9FFFFFF" Offset="0.375"/> 
              <GradientStop Color="#E5FFFFFF" Offset="0.625"/> 
              <GradientStop Color="#C6FFFFFF" Offset="1"/> 
             </LinearGradientBrush> 
            </Border.Background> 
            <Grid> 
             <ContentControl x:Name="HeaderTopUnselected" FontSize="{TemplateBinding FontSize}" Foreground="{TemplateBinding Foreground}" IsTabStop="False" Cursor="{TemplateBinding Cursor}" HorizontalAlignment="{TemplateBinding HorizontalAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalAlignment}"/> 
            </Grid> 
           </Border> 
          </Border> 
          <Border x:Name="DisabledVisualTopUnSelected" IsHitTestVisible="false" Opacity="0" Background="#8CFFFFFF" CornerRadius="3,3,0,0"/> 
         </Grid> 
         <Grid x:Name="TemplateBottomSelected" Visibility="Collapsed" Canvas.ZIndex="1"> 
          <Border Margin="-2,0,-2,-2" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="1,0,1,1" CornerRadius="0,0,3,3"> 
           <Border BorderBrush="#FFFFFFFF" BorderThickness="1" CornerRadius="0,0,1,1"> 
            <Border.Background> 
             <LinearGradientBrush EndPoint=".7,1" StartPoint=".7,0"> 
              <GradientStop Color="#FFFFFFFF" Offset="0"/> 
              <GradientStop Color="#F9FFFFFF" Offset="0.375"/> 
              <GradientStop Color="#E5FFFFFF" Offset="0.625"/> 
              <GradientStop Color="#C6FFFFFF" Offset="1"/> 
             </LinearGradientBrush> 
            </Border.Background> 
            <Grid> 
             <Rectangle Fill="#FFFFFFFF" Margin="0,-2,0,0"/> 
             <ContentControl x:Name="HeaderBottomSelected" FontSize="{TemplateBinding FontSize}" Foreground="{TemplateBinding Foreground}" IsTabStop="False" Cursor="{TemplateBinding Cursor}" HorizontalAlignment="{TemplateBinding HorizontalAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalAlignment}"/> 
            </Grid> 
           </Border> 
          </Border> 
          <Border x:Name="FocusVisualBottom" Margin="-2,0,-2,-2" IsHitTestVisible="false" Visibility="Collapsed" BorderBrush="#FF6DBDD1" BorderThickness="1,0,1,1" CornerRadius="0,0,3,3"/> 
          <Border x:Name="DisabledVisualBottomSelected" Margin="-2,0,-2,-2" IsHitTestVisible="false" Opacity="0" Background="#8CFFFFFF" CornerRadius="0,0,3,3"/> 
         </Grid> 
         <Grid x:Name="TemplateBottomUnselected" Visibility="Collapsed"> 
          <Border x:Name="BorderBottom" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="1" CornerRadius="0,0,3,3"> 
           <Border x:Name="GradientBottom" BorderBrush="#FFFFFFFF" BorderThickness="1" CornerRadius="0,0,1,1"> 
            <Border.Background> 
             <LinearGradientBrush EndPoint=".7,1" StartPoint=".7,0"> 
              <GradientStop Color="#FFFFFFFF" Offset="0"/> 
              <GradientStop Color="#F9FFFFFF" Offset="0.375"/> 
              <GradientStop Color="#E5FFFFFF" Offset="0.625"/> 
              <GradientStop Color="#C6FFFFFF" Offset="1"/> 
             </LinearGradientBrush> 
            </Border.Background> 
            <Grid> 
             <ContentControl x:Name="HeaderBottomUnselected" FontSize="{TemplateBinding FontSize}" Foreground="{TemplateBinding Foreground}" IsTabStop="False" Cursor="{TemplateBinding Cursor}" HorizontalAlignment="{TemplateBinding HorizontalAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalAlignment}"/> 
            </Grid> 
           </Border> 
          </Border> 
          <Border x:Name="DisabledVisualBottomUnSelected" IsHitTestVisible="false" Opacity="0" Background="#8CFFFFFF" CornerRadius="0,0,3,3"/> 
         </Grid> 
         <Grid x:Name="TemplateLeftSelected" Visibility="Collapsed" Canvas.ZIndex="1"> 
          <Border Margin="-2,-2,0,-2" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="1,1,0,1" CornerRadius="3,0,0,3"> 
           <Border BorderBrush="#FFFFFFFF" BorderThickness="1" CornerRadius="1,0,0,1"> 
            <Border.Background> 
             <LinearGradientBrush EndPoint=".7,1" StartPoint=".7,0"> 
              <GradientStop Color="#FFFFFFFF" Offset="0"/> 
              <GradientStop Color="#F9FFFFFF" Offset="0.375"/> 
              <GradientStop Color="#E5FFFFFF" Offset="0.625"/> 
              <GradientStop Color="#C6FFFFFF" Offset="1"/> 
             </LinearGradientBrush> 
            </Border.Background> 
            <Grid> 
             <Rectangle Fill="#FFFFFFFF" Margin="0,0,-2,0"/> 
             <ContentControl x:Name="HeaderLeftSelected" FontSize="{TemplateBinding FontSize}" Foreground="{TemplateBinding Foreground}" IsTabStop="False" Cursor="{TemplateBinding Cursor}" HorizontalAlignment="{TemplateBinding HorizontalAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalAlignment}" Style="{StaticResource LeftTabItemHeader}"/> 
            </Grid> 
           </Border> 
          </Border> 
          <Border x:Name="FocusVisualLeft" Margin="-2,-2,0,-2" IsHitTestVisible="false" Visibility="Collapsed" BorderBrush="#FF6DBDD1" BorderThickness="1,1,0,1" CornerRadius="3,0,0,3"/> 
          <Border x:Name="DisabledVisualLeftSelected" Margin="-2,-2,0,-2" IsHitTestVisible="false" Opacity="0" Background="#8CFFFFFF" CornerRadius="3,0,0,3"/> 
         </Grid> 
         <Grid x:Name="TemplateLeftUnselected" Visibility="Collapsed"> 
          <Border x:Name="BorderLeft" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="3,0,0,3"> 
           <Border x:Name="GradientLeft" BorderBrush="#FFFFFFFF" BorderThickness="1" CornerRadius="1,0,0,1"> 
            <Border.Background> 
             <LinearGradientBrush EndPoint=".7,1" StartPoint=".7,0"> 
              <GradientStop Color="#FFFFFFFF" Offset="0"/> 
              <GradientStop Color="#F9FFFFFF" Offset="0.375"/> 
              <GradientStop Color="#E5FFFFFF" Offset="0.625"/> 
              <GradientStop Color="#C6FFFFFF" Offset="1"/> 
             </LinearGradientBrush> 
            </Border.Background> 
            <Grid> 
             <ContentControl x:Name="HeaderLeftUnselected" FontSize="{TemplateBinding FontSize}" Foreground="{TemplateBinding Foreground}" IsTabStop="False" Cursor="{TemplateBinding Cursor}" HorizontalAlignment="{TemplateBinding HorizontalAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalAlignment}" Style="{StaticResource LeftTabItemHeader}"/> 
            </Grid> 
           </Border> 
          </Border> 
          <Border x:Name="DisabledVisualLeftUnSelected" IsHitTestVisible="false" Opacity="0" Background="#8CFFFFFF" CornerRadius="3,0,0,3"/> 
         </Grid> 
         <Grid x:Name="TemplateRightSelected" Visibility="Collapsed" Canvas.ZIndex="1"> 
          <Border Margin="0,-2,-2,-2" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="0,1,1,1" CornerRadius="0,3,3,0"> 
           <Border BorderBrush="#FFFFFFFF" BorderThickness="1" CornerRadius="0,1,1,0"> 
            <Border.Background> 
             <LinearGradientBrush EndPoint=".7,1" StartPoint=".7,0"> 
              <GradientStop Color="#FFFFFFFF" Offset="0"/> 
              <GradientStop Color="#F9FFFFFF" Offset="0.375"/> 
              <GradientStop Color="#E5FFFFFF" Offset="0.625"/> 
              <GradientStop Color="#C6FFFFFF" Offset="1"/> 
             </LinearGradientBrush> 
            </Border.Background> 
            <Grid> 
             <Rectangle Fill="#FFFFFFFF" Margin="-2,0,0,0"/> 
             <ContentControl x:Name="HeaderRightSelected" FontSize="{TemplateBinding FontSize}" Foreground="{TemplateBinding Foreground}" IsTabStop="False" Cursor="{TemplateBinding Cursor}" HorizontalAlignment="{TemplateBinding HorizontalAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalAlignment}" Style="{StaticResource RightTabItemHeader}"/> 
            </Grid> 
           </Border> 
          </Border> 
          <Border x:Name="FocusVisualRight" Margin="0,-2,-2,-2" IsHitTestVisible="false" Visibility="Collapsed" BorderBrush="#FF6DBDD1" BorderThickness="0,1,1,1" CornerRadius="0,3,3,0"/> 
          <Border x:Name="DisabledVisualRightSelected" Margin="0,-2,-2,-2" IsHitTestVisible="false" Opacity="0" Background="#8CFFFFFF" CornerRadius="0,3,3,0"/> 
         </Grid> 
         <Grid x:Name="TemplateRightUnselected" Visibility="Collapsed"> 
          <Border x:Name="BorderRight" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="1" CornerRadius="0,3,3,0"> 
           <Border x:Name="GradientRight" BorderBrush="#FFFFFFFF" BorderThickness="1" CornerRadius="0,1,1,0"> 
            <Border.Background> 
             <LinearGradientBrush EndPoint=".7,1" StartPoint=".7,0"> 
              <GradientStop Color="#FFFFFFFF" Offset="0"/> 
              <GradientStop Color="#F9FFFFFF" Offset="0.375"/> 
              <GradientStop Color="#E5FFFFFF" Offset="0.625"/> 
              <GradientStop Color="#C6FFFFFF" Offset="1"/> 
             </LinearGradientBrush> 
            </Border.Background> 
            <Grid> 
             <ContentControl x:Name="HeaderRightUnselected" FontSize="{TemplateBinding FontSize}" Foreground="{TemplateBinding Foreground}" IsTabStop="False" Cursor="{TemplateBinding Cursor}" HorizontalAlignment="{TemplateBinding HorizontalAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalAlignment}" Style="{StaticResource RightTabItemHeader}"/> 
            </Grid> 
           </Border> 
          </Border> 
          <Border x:Name="DisabledVisualRightUnSelected" IsHitTestVisible="false" Opacity="0" Background="#8CFFFFFF" CornerRadius="0,3,3,0"/> 
         </Grid> 
         <Border x:Name="FocusVisualElement" Margin="-1" IsHitTestVisible="false" Visibility="Collapsed" BorderBrush="#FF6DBDD1" BorderThickness="1" CornerRadius="3,3,0,0"/> 
        </Grid> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

을 한 다음 각 탭의 항목이 할당 할 수 있습니다 :

  <controls:TabControl TabStripPlacement="Right" Margin="4"> 
      <controls:TabItem Header="First" Style="{StaticResource TabItemStyle}"> 
       <controls:TreeView> 
        <controls:TreeViewItem Header="Parent 1" /> 
        <controls:TreeViewItem Header="Parent 2"> 
         <controls:TreeViewItem Header="Child 1"> 
          <controls:TreeViewItem Header="Grandchild 1" /> 
         </controls:TreeViewItem> 
        </controls:TreeViewItem> 
        <controls:TreeViewItem Header="Parent 3"> 
         <controls:TreeViewItem Header="Child 1"> 
          <controls:TreeViewItem Header="Grandchild 1" /> 
          <controls:TreeViewItem Header="Grandchild 2" /> 
         </controls:TreeViewItem> 
        </controls:TreeViewItem> 
       </controls:TreeView> 
      </controls:TabItem> 
      <controls:TabItem Header="Second" Style="{StaticResource TabItemStyle}"> 
       <controls:TreeView> 
        <controls:TreeViewItem Header="Parent 1" /> 
        <controls:TreeViewItem Header="Parent 2"> 
         <controls:TreeViewItem Header="Child 1"> 
          <controls:TreeViewItem Header="Grandchild 1" /> 
         </controls:TreeViewItem> 
        </controls:TreeViewItem> 
        <controls:TreeViewItem Header="Parent 3"> 
         <controls:TreeViewItem Header="Child 1"> 
          <controls:TreeViewItem Header="Grandchild 1" /> 
          <controls:TreeViewItem Header="Grandchild 2" /> 
         </controls:TreeViewItem> 
        </controls:TreeViewItem> 
        <controls:TreeViewItem Header="Parent 4"> 
         <controls:TreeViewItem Header="Child 1"> 
          <controls:TreeViewItem Header="Grandchild 1" /> 
          <controls:TreeViewItem Header="Grandchild 2" /> 
          <controls:TreeViewItem Header="Grandchild 3" /> 
          <controls:TreeViewItem Header="Grandchild 4" /> 
          <controls:TreeViewItem Header="Grandchild 5" /> 
          <controls:TreeViewItem Header="Grandchild 6" /> 
          <controls:TreeViewItem Header="Grandchild 7" /> 
          <controls:TreeViewItem Header="Grandchild 8" /> 
         </controls:TreeViewItem> 
        </controls:TreeViewItem> 
       </controls:TreeView> 
      </controls:TabItem> 
     </controls:TabControl> 

이제 위/아래/오른쪽/왼쪽에서 변경할 수 있으며 텍스트는 오른쪽/왼쪽에서 세로로 갈 것입니다. 티. 이 예제에서는 위쪽과 아래쪽을 혼자 두었지만이 탭을 제어하는 ​​방법에 대한 충분한 아이디어를 제공해야합니다.

+1

xaml을 사용하지 않음 ... 이것은 winforms를위한 것입니다. – bbqchickenrobot

관련 문제