【WPF】自定义CheckBox复选框
2013-04-08 12:23
295 查看
<Style x:Key="CheckBoxStyle" TargetType="{x:Type CheckBox}"> <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/> <Setter Property="Background" Value="{StaticResource CheckRadioFillNormal}"/> <Setter Property="BorderBrush" Value="{StaticResource CheckRadioStrokeNormal}"/> <Setter Property="BorderThickness" Value="1"/> <Setter Property="FocusVisualStyle" Value="{StaticResource EmptyCheckBoxFocusVisual}"/> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type CheckBox}"> <BulletDecorator Background="Transparent" SnapsToDevicePixels="true"> <BulletDecorator.Bullet> <Border x:Name="cbd" BorderThickness="2" BorderBrush="LightBlue" MinHeight="30" MinWidth="30" VerticalAlignment="Center" Background="White"> <Path x:Name="cp" Stroke="Lime" StrokeThickness="2" Width="25" Height="25" /> </Border> </BulletDecorator.Bullet> <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/> </BulletDecorator> <ControlTemplate.Triggers> <Trigger Property="IsChecked" Value="true" > <Setter TargetName="cp" Property="Data" Value="M 0 17 L 7 25 M 7 27 L 27 0" /> <Setter TargetName="cbd" Property="Background" Value="LightGray" /> </Trigger> <Trigger Property="HasContent" Value="true"> <Setter Property="FocusVisualStyle" Value="{StaticResource CheckRadioFocusVisual}"/> <Setter Property="Padding" Value="2,0,0,0"/> </Trigger> <Trigger Property="IsEnabled" Value="false"> <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/> </Trigger> <Trigger Property="IsMouseOver" Value="True"> <Setter TargetName="cbd" Property="Background"> <Setter.Value> <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1"> <GradientStop Color="LightGray" Offset="0.5" /> <GradientStop Color="Silver" Offset="0.5" /> </LinearGradientBrush> </Setter.Value> </Setter> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter> </Style>
用到WPF中的CheckBox,发现默认的控件,勾选框奇小无比,无法通过设定宽高更改,只好自己研究一下怎么改模板,之前都是用Expression Blend改的,这回稍微认真地了解了一下。代码在上面。
最终效果可以引用CheckBoxStyle一下看看。
说明:
Border为框,Path为勾,其他属性自己研究吧
效果如图,很丑
相关文章推荐
- 关于jsp页面checkbox复选框的默认样式的修改(自定义复选框样式)
- 自定义checkbox 复选框的样式以及控制 checkbox 复选框的大小
- 自定义复选框 checkbox 样式
- Android 自定义CheckBoxPreference的CheckBox复选框
- ZH奶酪:纯CSS自定义Html中Checkbox复选框样式
- 基于CSS3自定义美化复选框Checkbox组合
- Android之自定义checkbox并解决内容和复选框之间的具体问题
- WPF自定义控件与样式(4)-CheckBox/RadioButton自定义样式
- 继续聊WPF——自定义CheckBox控件外观
- CSS3自定义美化复选框Checkbox组合
- 自定义复选框checkbox样式
- CSS3自定义Checkbox复选框
- 继续聊WPF——自定义CheckBox控件外观
- WPF自定义控件与样式(4)-CheckBox/RadioButton自定义样式
- WPF子弹头复选框(BulletCheckBox)
- 继续聊WPF——自定义CheckBox控件外观
- WPF 自定义CheckBox样式
- 纯css3自定义复选框checkbox样式
- 自定义Checkbox让复选框居中对于RadioButton同样适用
- Android 自定义CheckBox复选框