分類
1
ControlTemplate
ItemsPanelTemplate
DataTemplate
樣式Style和模板Template對比
Style:樣式鹏浅,風(fēng)格
Template:模版诗轻,某種控件長什么樣子
Style依賴原始控件钳宪,對控件的已有屬性進行改造
Template天馬行空,實現(xiàn)對控件顛覆式的改造
Style中可以包含Template
Style嵌套Template
<Window.Resources>
<Style TargetType="CheckBox" x:Key="CheckBoxStyle">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="CheckBox">
<StackPanel>
<!--設(shè)置Rectangle邊框的寬度和顏色扳炬,設(shè)置Rectangle的高寬-->
<Rectangle Name="breakRectangle" Stroke="Cyan" StrokeThickness="2" Width="20" Height="20">
<Rectangle.Fill>
<!--默認(rèn)Rectangle填充色為White-->
<SolidColorBrush Color="White"></SolidColorBrush>
</Rectangle.Fill>
</Rectangle>
<!--沒有ContentPresenter標(biāo)簽吏颖,則不保留原來的屬性,顯示不出文本-->
<!--TemplateBinding Padding恨樟,則綁定每個CheckBox自己的Margin半醉,更靈活-->
<ContentPresenter Margin="{TemplateBinding Padding}"></ContentPresenter>
</StackPanel>
<ControlTemplate.Triggers>
<!--目標(biāo)為breakRectangle,當(dāng)IsChecked=true的時候劝术,將填充色設(shè)置為CornflowerBlue-->
<Trigger Property="IsChecked" Value="True">
<Setter TargetName="breakRectangle" Property="Fill" Value="CornflowerBlue"></Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<Grid>
<CheckBox Style="{StaticResource CheckBoxStyle}"></CheckBox>
</Grid>
示例代碼
https://github.com/zLulus/NotePractice/tree/dev3/WPF/WpfDemo/Template/StyleUseTemplate