공부/expression blend
Setter Property 세터프로퍼티
go_inside
2010. 10. 15. 15:20
세터프로퍼티를 잘 정의하면 코드가 아주 깔끔함
1. 클래스의 개념, 두께나 RecognizeAccesskey 등의 특수한 경우를 제외하고는 다 프로퍼티로 뺄 수 있다.
오른쪽 마우스를 눌러서 세터프로퍼티로 빠지는지 확인해 보면 빠지는지 안빠지는지 구분이 가능함
2. 기본 세터프로퍼티는 지우지 않는게 좋다 추가는 자유로움
3. Value="{x:Null} / Value="Transparent" 다른점은?? Null은 아무것도 없는 빈 공간이고 Transparent 투명이지만 자리 영역은 차지
4. 세터벨류로 디테일하게 작업 가능함
<Setter Property="Template">
<Setter.Value>
<Setter.Value>
<ControlTemplate TargetType="{x:Type ToggleButton}">
<Grid Background="{TemplateBinding Background}">
<Image x:Name="img_tgbImg1" Source="Image/tgb_ImgMag.png" Stretch="None"/>
<Image x:Name="img_tgbImg2" Source="Image/tgb_ImgTrue.png" Stretch="None" Visibility="Collapsed"/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter Property="Visibility" TargetName="img_tgbImg2" Value="Visible"/>
<Setter Property="Visibility" TargetName="img_tgbImg1" Value="Collapsed"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
<Grid Background="{TemplateBinding Background}">
<Image x:Name="img_tgbImg1" Source="Image/tgb_ImgMag.png" Stretch="None"/>
<Image x:Name="img_tgbImg2" Source="Image/tgb_ImgTrue.png" Stretch="None" Visibility="Collapsed"/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter Property="Visibility" TargetName="img_tgbImg2" Value="Visible"/>
<Setter Property="Visibility" TargetName="img_tgbImg1" Value="Collapsed"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Setter>
5. x:Key="S_tgbChangeCompass" 엑스키의 이름을 안주면 해당 타겟타입은 모두 적용되는 효과가 된다
6. 리소스로 빼지 않고 레이아웃 패널에 레이아웃.Resources을 넣어 제어할 수 있다.
<StackPanel>
<StackPanel.Resources>
<StackPanel.Resources>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="FontSize" Value="40"/>
<Setter Property="Foreground" Value="White"/>
<Setter Property="FontFamily" Value="Charlemagne Std"/>
<Setter Property="Foreground" Value="White"/>
<Setter Property="FontFamily" Value="Charlemagne Std"/>
</Style>
</StackPanel.Resources>
</StackPanel>
</StackPanel>