Template简介 - zLulus/My_Note GitHub Wiki

分类

1

ControlTemplate
ItemsPanelTemplate
DataTemplate

样式Style和模板Template对比

Style:样式,风格
Template:模版,某种控件长什么样子
Style依赖原始控件,对控件的已有属性进行改造
Template天马行空,实现对控件颠覆式的改造
Style中可以包含Template

Style嵌套Template

<Window.Resources>
	<Style TargetType="CheckBox" x:Key="CheckBoxStyle">
		<Setter Property="Template">
			<Setter.Value>
				<ControlTemplate TargetType="CheckBox">
					<StackPanel>
						<!--设置Rectangle边框的宽度和颜色设置Rectangle的高宽-->
						<Rectangle Name="breakRectangle" Stroke="Cyan" StrokeThickness="2" Width="20" Height="20">
							<Rectangle.Fill>
								<!--默认Rectangle填充色为White-->
								<SolidColorBrush Color="White"></SolidColorBrush>
							</Rectangle.Fill>
						</Rectangle>
						<!--没有ContentPresenter标签,则不保留原来的属性,显示不出文本-->
						<!--TemplateBinding Padding,则绑定每个CheckBox自己的Margin,更灵活-->
						<ContentPresenter Margin="{TemplateBinding Padding}"></ContentPresenter>
					</StackPanel>
					<ControlTemplate.Triggers>
						<!--目标为breakRectangle当IsChecked=true的时候,将填充色设置为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

⚠️ **GitHub.com Fallback** ⚠️