WPF CHECKBOX STYLE
源自 http://www.wpfhelper.com/index.php/android-ui-for-wpf/23-modern-ui-for-wpf/android-ui-for-wpf/26-wpf-checkbox-style-inspired-by-android

How create WPF CheckBox style and customize it. The CheckBox style is inspired by Android design.
CheckBox design:
Grid with relative size of columns and rows makes possible change CheckBox size using Height and Width
. Or you can use Viewbox.
Design of CheckBox style:

CheckBox states:
a) checked, disable
b) checked
c) indeterminate, disable
d) indeterminate
e) unchecked
f) pressed
-
CheckBox style
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117<Stylex:Key="CheckBoxStyle"TargetType="{x:Type CheckBox}"><SetterProperty="SnapsToDevicePixels"Value="true"/><SetterProperty="OverridesDefaultStyle"Value="true"/><SetterProperty="Height"Value="30"/><SetterProperty="FocusVisualStyle"Value="{DynamicResource MyFocusVisualStyte}"/><SetterProperty="Template"><Setter.Value><ControlTemplateTargetType="{x:Type CheckBox}"><BulletDecorator><BulletDecorator.Bullet><GridHeight="{TemplateBinding Height}"Width="{Binding RelativeSource={RelativeSource Self}, Path=Height, UpdateSourceTrigger=PropertyChanged}"MinHeight="30"MinWidth="30"ShowGridLines="False"><Grid.ColumnDefinitions><ColumnDefinitionWidth="4*"/><ColumnDefinitionWidth="1*"/><ColumnDefinitionWidth="1*"/><ColumnDefinitionWidth="4*"/><ColumnDefinitionWidth="1*"/><ColumnDefinitionWidth="1*"/><ColumnDefinitionWidth="2*"/><ColumnDefinitionWidth="2*"/></Grid.ColumnDefinitions><Grid.RowDefinitions><RowDefinitionHeight="3*"/><RowDefinitionHeight="1*"/><RowDefinitionHeight="1*"/><RowDefinitionHeight="1*"/><RowDefinitionHeight="4*"/><RowDefinitionHeight="1*"/><RowDefinitionHeight="1*"/><RowDefinitionHeight="4*"/></Grid.RowDefinitions><BorderName="MainBorder"Grid.ColumnSpan="9"Grid.RowSpan="9"CornerRadius="4"BorderThickness="1"Background="Transparent"/><BorderName="InnerBorder"Grid.Column="1"Grid.ColumnSpan="5"Grid.Row="2"Grid.RowSpan="5"BorderThickness="1"BorderBrush="#808080"/><PathName="InnerPath"Grid.Column="1"Grid.ColumnSpan="5"Grid.Row="2"Grid.RowSpan="5"Data="M31,5 L19.5,5 19.5,19.5 34.5,19.5 34.5,11.75"Stretch="Fill"Stroke="#808080"/><PathName="CheckMark"Grid.Column="2"Grid.ColumnSpan="5"Grid.Row="1"Grid.RowSpan="5"Opacity="0"Data="M9.07743946676476E-09,4.31805768640244L4.68740335877841,8.86361158398516C4.68740335877841,8.86361158398516,16.3281249985376,-2.42451336648723,16.3281249985376,-2.42451336648723L14.0622100581796,-4.77304938341948 4.68740335877846,4.31805791992662 2.22656251699567,1.93164208562579z"Fill="#3babe3"Stretch="Fill"Stroke="#3babe3"/><PathName="InderminateMark"Grid.Column="3"Grid.Row="4"Data="M0,4 L1,5 5,1 4,0"Opacity="0"Stretch="Fill"StrokeThickness="0"Fill="#808080"/></Grid></BulletDecorator.Bullet><VisualStateManager.VisualStateGroups><VisualStateGroupx:Name="CheckStates"><VisualStatex:Name="Checked"><Storyboard><DoubleAnimationStoryboard.TargetProperty="Opacity"Storyboard.TargetName="CheckMark"Duration="0:0:0.2"To="1"/></Storyboard></VisualState><VisualStatex:Name="Unchecked"><Storyboard><DoubleAnimationStoryboard.TargetProperty="Opacity"Storyboard.TargetName="CheckMark"Duration="0:0:0.2"To="0"/></Storyboard></VisualState><VisualStatex:Name="Indeterminate"><Storyboard><DoubleAnimationStoryboard.TargetProperty="Opacity"Storyboard.TargetName="InderminateMark"Duration="0:0:0.2"To="1"/></Storyboard></VisualState></VisualStateGroup></VisualStateManager.VisualStateGroups><ContentPresenterMargin="4,0,4,0"VerticalAlignment="Center"HorizontalAlignment="Left"RecognizesAccessKey="True"/></BulletDecorator><ControlTemplate.Triggers><TriggerProperty="IsChecked"Value="True"><SetterTargetName="InnerBorder"Property="Visibility"Value="Collapsed"/></Trigger><TriggerProperty="IsPressed"Value="True"><SetterTargetName="MainBorder"Property="Background"Value="#81d2eb"/></Trigger><TriggerProperty="IsEnabled"Value="False"><SetterTargetName="CheckMark"Property="Fill"Value="#cccccc"/><SetterTargetName="CheckMark"Property="Stroke"Value="#cccccc"/><SetterTargetName="InnerPath"Property="Stroke"Value="#cccccc"/><SetterTargetName="InderminateMark"Property="Fill"Value="#cccccc"/><SetterTargetName="InnerBorder"Property="BorderBrush"Value="#cccccc"/></Trigger></ControlTemplate.Triggers></ControlTemplate></Setter.Value></Setter></Style> -
MyFocusVisualStyle
12345678910<Stylex:Key="MyFocusVisualStyte"><SetterProperty="Control.Template"><Setter.Value><ControlTemplate><Rectanglex:Name="FocusStyle"StrokeDashArray="4 4"RadiusX="5"RadiusY="5"Fill="Transparent"Stroke="#81d2eb"StrokeThickness="1"/></ControlTemplate></Setter.Value></Setter></Style>
浙公网安备 33010602011771号