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

 

一些疑点将会在后期补充

posted @ 2016-12-13 15:41  _蔚蓝  阅读(1063)  评论(0编辑  收藏  举报