Checkbox 模板和样式
1 <Style TargetType="{x:Type CheckBox}">
2 <Setter Property="FontFamily" Value="Microsoft YaHei" />
3 <Setter Property="FontSize" Value="12" />
4 <Setter Property="FocusVisualStyle" Value="{x:Null}" />
5 <Setter Property="Background" Value="{DynamicResource ButtonBackground}" />
6 <Setter Property="BorderBrush" Value="{DynamicResource ButtonBorder}" />
7 <Setter Property="Foreground" Value="{DynamicResource WindowText}" />
8 <Setter Property="BorderThickness" Value="1" />
9 <Setter Property="Template">
10 <Setter.Value>
11 <ControlTemplate TargetType="{x:Type CheckBox}">
12 <Grid x:Name="LayoutRoot" Margin="{TemplateBinding Padding}">
13 <Grid.ColumnDefinitions>
14 <ColumnDefinition Width="Auto" />
15 <ColumnDefinition Width="*" />
16 </Grid.ColumnDefinitions>
17 <Border x:Name="CheckBorder" Width="16" Height="16" Margin="0,1,4,0" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}">
18 <Grid>
19 <Path x:Name="CheckMark"
20 Width="10" Height="10"
21 Margin="2"
22 Data="F1M15,21L22,28 32.9999,14.0001 35.9999,17.0001 22,34 12.0001,24 15,21z"
23 Fill="{TemplateBinding Foreground}"
24 Stretch="Fill" Visibility="Collapsed" />
25 <Rectangle x:Name="Indeterminate" Width="8" Height="8" Margin="4" Fill="{TemplateBinding Foreground}" Visibility="Hidden" />
26 </Grid>
27 </Border>
28 <ContentPresenter Grid.Column="1"
29 Margin="{TemplateBinding Padding}"
30 HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
31 VerticalAlignment="Center"
32 Content="{TemplateBinding Content}"
33 ContentStringFormat="{TemplateBinding ContentStringFormat}"
34 ContentTemplate="{TemplateBinding ContentTemplate}"
35 Focusable="False" RecognizesAccessKey="True"
36 SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
37 </Grid>
38 <ControlTemplate.Triggers>
39 <MultiDataTrigger>
40 <MultiDataTrigger.Conditions>
41 <Condition Binding="{Binding IsThreeState, RelativeSource={RelativeSource Self}}" Value="True" />
42 <Condition Binding="{Binding IsChecked, RelativeSource={RelativeSource Self}}" Value="True" />
43 </MultiDataTrigger.Conditions>
44 <Setter Property="Foreground" Value="{DynamicResource ButtonTextDisabled}" />
45 <Setter TargetName="CheckMark" Property="Visibility" Value="Collapsed" />
46 <Setter TargetName="Indeterminate" Property="Visibility" Value="Visible" />
47 </MultiDataTrigger>
48 <Trigger Property="IsEnabled" Value="False">
49 <Setter Property="Foreground" Value="{DynamicResource ButtonTextDisabled}" />
50 </Trigger>
51 <Trigger Property="IsChecked" Value="True">
52 <Setter TargetName="CheckMark" Property="Visibility" Value="Visible" />
53 <Setter TargetName="Indeterminate" Property="Visibility" Value="Collapsed" />
54 </Trigger>
55 <Trigger Property="IsMouseOver" Value="True">
56 <Setter TargetName="CheckBorder" Property="Background" Value="{DynamicResource ButtonBackgroundHover}" />
57 <Setter TargetName="CheckBorder" Property="BorderBrush" Value="{DynamicResource ButtonBorderHover}" />
58 <Setter TargetName="CheckMark" Property="Fill" Value="{DynamicResource ButtonTextHover}" />
59 </Trigger>
60 <Trigger Property="IsPressed" Value="True">
61 <Setter TargetName="CheckBorder" Property="Background" Value="{DynamicResource ButtonBackgroundPressed}" />
62 <Setter TargetName="CheckBorder" Property="BorderBrush" Value="{DynamicResource ButtonBorderPressed}" />
63 <Setter TargetName="CheckMark" Property="Fill" Value="{DynamicResource ButtonTextPressed}" />
64 </Trigger>
65 <Trigger Property="IsFocused" Value="True">
66 <Setter TargetName="CheckBorder" Property="BorderBrush" Value="{DynamicResource Accent}" />
67 </Trigger>
68 </ControlTemplate.Triggers>
69 </ControlTemplate>
70 </Setter.Value>
71 </Setter>
72 </Style>
应用
1 <CheckBox Content="checkbox"/>
引用:
https://msdn.microsoft.com/zh-cn/library/ms752319(v=vs.110).aspx
一些疑点将会在后期补充
本文来自博客园,作者:_蔚蓝,转载请注明原文链接:https://www.cnblogs.com/SunsetAzure/p/6170223.html