728x90
반응형
728x170
■ ControlTemplate 엘리먼트를 사용해 라운드 사각형을 갖는 TabControl 엘리먼트를 정의하는 방법을 보여준다.
▶ MainWindow.xaml
<Window x:Class="TestProject.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="800"
Height="600"
Title="ControlTemplate 엘리먼트 : 라운드 사각형 TabControl 엘리먼트 정의하기"
FontFamily="나눔고딕코딩"
FontSize="16">
<Window.Resources>
<Style TargetType="{x:Type TabControl}">
<Setter Property="TabStripPlacement" Value="Left" />
<Setter Property="Background" Value="White" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TabControl}">
<Grid
ClipToBounds="True"
SnapsToDevicePixels="True"
KeyboardNavigation.TabNavigation="Local">
<Grid.ColumnDefinitions>
<ColumnDefinition Name="ColumnDefinition0" Width="Auto" />
<ColumnDefinition Name="ColumnDefinition1" Width="0" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Name="RowDefinition0" Height="Auto" />
<RowDefinition Name="RowDefinition1" Height="*" />
</Grid.RowDefinitions>
<Border x:Name="HeaderBorder"
Margin="0 0 0 5"
BorderBrush="Black"
BorderThickness="1"
CornerRadius="5"
Background="#fafafa">
<TabPanel Name="HeaderPanel" Grid.Row="0" Grid.Column="0"
IsItemsHost="True"
Panel.ZIndex="1"
KeyboardNavigation.TabIndex="1" />
</Border>
<Grid Name="ContentPanel" Grid.Row="1" Grid.Column="0"
KeyboardNavigation.TabIndex="2"
KeyboardNavigation.TabNavigation="Local"
KeyboardNavigation.DirectionalNavigation="Contained">
<Border
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
CornerRadius="5"
Background="{TemplateBinding Background}">
<ContentPresenter Name="PART_SelectedContentHost"
ContentTemplate="{TemplateBinding SelectedContentTemplate}"
SnapsToDevicePixels="{TemplateBinding UIElement.SnapsToDevicePixels}"
Margin="2"
ContentStringFormat="{TemplateBinding SelectedContentStringFormat}"
ContentSource="SelectedContent"
Content="{TemplateBinding SelectedContent}" />
</Border>
</Grid>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="TabControl.TabStripPlacement" Value="Left">
<Setter TargetName="HeaderPanel" Property="Grid.Row" Value="0" />
<Setter TargetName="ContentPanel" Property="Grid.Row" Value="0" />
<Setter TargetName="HeaderPanel" Property="Grid.Column" Value="0" />
<Setter TargetName="ContentPanel" Property="Grid.Column" Value="1" />
<Setter TargetName="ColumnDefinition0" Property="ColumnDefinition.Width" Value="Auto" />
<Setter TargetName="ColumnDefinition1" Property="ColumnDefinition.Width" Value="*" />
<Setter TargetName="RowDefinition0" Property="RowDefinition.Height" Value="*" />
<Setter TargetName="RowDefinition1" Property="RowDefinition.Height" Value="0" />
<Setter TargetName="HeaderBorder" Property="FrameworkElement.Margin" Value="0 0 5 0" />
</Trigger>
<Trigger Property="TabControl.TabStripPlacement" Value="Right">
<Setter TargetName="HeaderPanel" Property="Grid.Row" Value="0" />
<Setter TargetName="ContentPanel" Property="Grid.Row" Value="0" />
<Setter TargetName="HeaderPanel" Property="Grid.Column" Value="1" />
<Setter TargetName="ContentPanel" Property="Grid.Column" Value="0" />
<Setter TargetName="ColumnDefinition0" Property="ColumnDefinition.Width" Value="*" />
<Setter TargetName="ColumnDefinition1" Property="ColumnDefinition.Width" Value="Auto" />
<Setter TargetName="RowDefinition0" Property="RowDefinition.Height" Value="*" />
<Setter TargetName="RowDefinition1" Property="RowDefinition.Height" Value="0" />
<Setter TargetName="HeaderBorder" Property="FrameworkElement.Margin" Value="5 0 0 0" />
</Trigger>
<Trigger Property="TabControl.TabStripPlacement" Value="Bottom">
<Setter TargetName="HeaderPanel" Property="Grid.Row" Value="1" />
<Setter TargetName="ContentPanel" Property="Grid.Row" Value="0" />
<Setter TargetName="RowDefinition0" Property="RowDefinition.Height" Value="*" />
<Setter TargetName="RowDefinition1" Property="RowDefinition.Height" Value="Auto" />
<Setter TargetName="HeaderBorder" Property="FrameworkElement.Margin" Value="0 5 0 0" />
</Trigger>
<Trigger Property="UIElement.IsEnabled" Value="False">
<Setter
Property="TextElement.Foreground"
Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<Grid Margin="10">
<TabControl>
<TabItem Header="탭 헤더 1">
<TextBlock
Margin="10"
Text="탭 헤더 1 내용 입니다." />
</TabItem>
<TabItem Header="탭 헤더 2">
<TextBlock
Margin="10"
Text="탭 헤더 2 내용 입니다." />
</TabItem>
<TabItem Header="탭 헤더 3">
<TextBlock
Margin="10"
Text="탭 헤더 3 내용 입니다." />
</TabItem>
</TabControl>
</Grid>
</Window>
728x90
반응형
그리드형(광고전용)
'C# > WPF' 카테고리의 다른 글
[C#/WPF] DrawingBrush 엘리먼트 : Drawing 속성을 사용해 물고기 브러시 만들기 (0) | 2020.09.11 |
---|---|
[C#/WPF] DrawingContext 클래스 : DrawDrawing 메소드를 사용해 드로잉 그리기 (0) | 2020.09.11 |
[C#/WPF] DrawingContext 클래스 : DrawImage 메소드를 사용해 이미지 그리기 (0) | 2020.09.11 |
[C#/WPF] DrawingContext 클래스 : DrawGeometry 메소드를 사용해 지오메트리 그리기 (0) | 2020.09.11 |
[C#/WPF] ControlTemplate 엘리먼트 : 가로 방향 ListBox 엘리먼트 정의하기 (0) | 2020.09.11 |
[C#/WPF] ControlTemplate 엘리먼트 : 사각형 탭 헤더를 갖는 TabControl 엘리먼트 정의하기 (0) | 2020.09.11 |
[C#/WPF] ControlTemplate 엘리먼트 : 아이콘 헤더 TabItem 엘리먼트 정의하기 (0) | 2020.09.11 |
[C#/WPF] DrawingContext 클래스 : DrawRoundedRectangle 메소드를 사용해 라운드 사각형 그리기 (0) | 2020.09.11 |
[C#/WPF] DrawingContext 클래스 : DrawRectangle 메소드를 사용해 사각형 그리기 (0) | 2020.09.11 |
[C#/WPF] Window 엘리먼트 : 테두리 없는 윈도우 그림자 효과 사용하기 (0) | 2020.09.11 |
댓글을 달아 주세요