• 【WPF】自定义CheckBox复选框


     1         <Style x:Key="CheckBoxStyle" TargetType="{x:Type CheckBox}">
     2             <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
     3             <Setter Property="Background" Value="{StaticResource CheckRadioFillNormal}"/>
     4             <Setter Property="BorderBrush" Value="{StaticResource CheckRadioStrokeNormal}"/>
     5             <Setter Property="BorderThickness" Value="1"/>
     6             <Setter Property="FocusVisualStyle" Value="{StaticResource EmptyCheckBoxFocusVisual}"/>
     7             <Setter Property="Template">
     8                 <Setter.Value>
     9                     <ControlTemplate TargetType="{x:Type CheckBox}">
    10                         <BulletDecorator Background="Transparent" SnapsToDevicePixels="true">
    11                             <BulletDecorator.Bullet>
    12                                 <Border x:Name="cbd" BorderThickness="2" BorderBrush="LightBlue" MinHeight="30" MinWidth="30" VerticalAlignment="Center" Background="White">
    13                                     <Path x:Name="cp" Stroke="Lime" StrokeThickness="2" Width="25" Height="25" />
    14                                 </Border>
    15                             </BulletDecorator.Bullet>
    16                             <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
    17                         </BulletDecorator>
    18                         <ControlTemplate.Triggers>
    19                             <Trigger Property="IsChecked" Value="true" >
    20                                 <Setter TargetName="cp" Property="Data" Value="M 0 17 L 7 25 M 7 27 L 27 0" />
    21                                 <Setter TargetName="cbd" Property="Background" Value="LightGray" />
    22                             </Trigger>
    23                             <Trigger Property="HasContent" Value="true">
    24                                 <Setter Property="FocusVisualStyle" Value="{StaticResource CheckRadioFocusVisual}"/>
    25                                 <Setter Property="Padding" Value="2,0,0,0"/>
    26                             </Trigger>
    27                             <Trigger Property="IsEnabled" Value="false">
    28                                 <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
    29                             </Trigger>
    30                             <Trigger Property="IsMouseOver" Value="True">
    31                                 <Setter TargetName="cbd" Property="Background">
    32                                     <Setter.Value>
    33                                         <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
    34                                             <GradientStop Color="LightGray" Offset="0.5" />
    35                                             <GradientStop Color="Silver" Offset="0.5" />
    36                                         </LinearGradientBrush>
    37                                     </Setter.Value>
    38                                 </Setter>
    39                             </Trigger>
    40                         </ControlTemplate.Triggers>
    41                     </ControlTemplate>
    42                 </Setter.Value>
    43             </Setter>
    44         </Style>

    用到WPF中的CheckBox,发现默认的控件,勾选框奇小无比,无法通过设定宽高更改,只好自己研究一下怎么改模板,之前都是用Expression Blend改的,这回稍微认真地了解了一下。代码在上面。

    最终效果可以引用CheckBoxStyle一下看看。

    说明:

    • Border为框,Path为勾,其他属性自己研究吧
    • 效果如图,很丑
  • 相关阅读:
    vue工作篇
    idea快捷键
    idea怎么随时随地调整字体大小
    idea配置maven
    idea启动加速
    idea配置tomcat
    idea设置哪个浏览器打开
    jsonArray和jsonObject的理解
    多文件上传保存到本地服务器
    并发编程
  • 原文地址:https://www.cnblogs.com/sinozhang1988/p/3007176.html
Copyright © 2020-2023  润新知