XAML or HTML

007. 스타일 정의(Override Style)

XAML 뽀개기
1
2
3
4
5
6
7
<Grid.Resources>
    <Style x:Key="Style_ControlBase">
        <!-- Property=”[ClassName].[DependencyProperty]”-->
        <Setter Property="Control.Width" Value="60"/>
        <Setter Property="Control.Height" Value="30"/>
    </Style>
</Grid.Resources>
cs

 

Style의 Setter 정의할 Property 앞에 Class명을 지정할 있습니다.

 

1
2
3
4
<TextBox Grid.Column="0" Style="{StaticResource Style_ControlBase}"
         Text="TextBox"/>
<Button Grid.Column="1" Style="{StaticResource Style_ControlBase}"
        Content="Button"/>
cs

 

 

TextBox Button 모두 Control에서 파생된 컨트롤이기 때문에 스타일에 영향을 받습니다. 추가로 TargetType 지정하지 않았기 때문에 가능한 일이기도 합니다.

 

 

1
2
3
4
5
<Style x:Key="Style_ControlBase" TargetType="{x:Type TextBox}">
    <!-- Property=”[ClassName].[DependencyProperty]”-->
    <Setter Property="Control.Width" Value="60"/>
    <Setter Property="Control.Height" Value="30"/>
</Style>
cs

 

TargetType을 지정하면 해당 타입에만 영향을 있기 때문에 많은 스타일을 다루는 프로젝트에서는 약이 되기도 하고 독이 되기도 합니다. 저는 TargetType을 지정해서 관리하는 것을 선호합니다.

 

1
2
<TextBox Grid.Column="1" Style="{StaticResource Style_ControlBase}"
         Text="TextBox" Width="80" Height="40"/>
cs

 

 

Style을 지정했지만 해당 속성을 다시 정의하면 지정된 Style을 무시(Override)하고 다시 정의할 있습니다.


샘플 코드 : https://github.com/CharlesKwon/XamlSimplified