WPF 基础控件之CheckBox样式

WPF开发者QQ群:340500857

       由于微信群人数太多入群请添加小编微信号

 yanjinhuawechatW_Feng_aiQ 邀请入群

 需备注WPF开发者 

 PS:有更好的方式欢迎推荐。

支持Nuget

Install-Package WPFDevelopers.Minimal -Version 3.0.0

01

代码如下

一、创建 Styles.CheckBox.xaml 代码如下。

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:sys="clr-namespace:System;assembly=mscorlib"><ResourceDictionary.MergedDictionaries><ResourceDictionary Source="../Themes/Basic/ControlBasic.xaml"/><ResourceDictionary Source="../Themes/Basic/Animations.xaml"/></ResourceDictionary.MergedDictionaries><Style TargetType="{x:Type CheckBox}" BasedOn="{StaticResource ControlBasicStyle}"><Setter Property="FocusVisualStyle" Value="{x:Null}" /><Setter Property="Cursor" Value="Hand"/><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="{x:Type CheckBox}"><BulletDecorator Background="Transparent"><BulletDecorator.Bullet><Border CornerRadius="{Binding ElementName=PART_Border,Path=CornerRadius}"Background="{Binding ElementName=PART_Border,Path=Background}"><Border x:Name="PART_Border" Width="16" Height="16"CornerRadius="3"BorderThickness="1"BorderBrush="{DynamicResource BaseSolidColorBrush}"Background="{DynamicResource WhiteSolidColorBrush}"><Grid><Path x:Name="PART_CheckMark" SnapsToDevicePixels="False" VerticalAlignment="Center" HorizontalAlignment="Center"Data="{StaticResource PathCheckMark}"RenderTransformOrigin=".5,.5"Stretch="Fill" Fill="{DynamicResource WhiteSolidColorBrush}"><Path.RenderTransform><ScaleTransform ScaleX="0" ScaleY="0"/></Path.RenderTransform></Path><Rectangle Width="6" Height="2" VerticalAlignment="Center" HorizontalAlignment="Center"x:Name="PART_InderminateMark"RenderTransformOrigin=".5,.5"Fill="{DynamicResource PrimaryNormalSolidColorBrush}"><Rectangle.RenderTransform><ScaleTransform ScaleX="0"/></Rectangle.RenderTransform></Rectangle></Grid></Border></Border></BulletDecorator.Bullet><ContentPresenter x:Name="PART_ContentPresenter"Focusable="False"HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="2,0,0,0" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"TextElement.Foreground="{DynamicResource PrimaryTextSolidColorBrush}"></ContentPresenter><VisualStateManager.VisualStateGroups><VisualStateGroup x:Name="CheckStates"><VisualState x:Name="Checked"><Storyboard><DoubleAnimation Storyboard.TargetName="PART_CheckMark"Storyboard.TargetProperty="(Path.RenderTransform).(ScaleTransform.ScaleX)" To=".7" Duration="00:00:.2"EasingFunction="{StaticResource ExponentialEaseOut}"/><DoubleAnimation Storyboard.TargetName="PART_CheckMark"Storyboard.TargetProperty="(Path.RenderTransform).(ScaleTransform.ScaleY)" To=".5" Duration="00:00:.2"EasingFunction="{StaticResource ExponentialEaseOut}"/></Storyboard></VisualState><VisualState x:Name="Unchecked" /><VisualState x:Name="Indeterminate"/></VisualStateGroup></VisualStateManager.VisualStateGroups></BulletDecorator><ControlTemplate.Triggers><Trigger Property="IsChecked" Value="True"><Setter Property="Background" TargetName="PART_Border" Value="{DynamicResource PrimaryNormalSolidColorBrush}"/><Setter Property="BorderBrush" TargetName="PART_Border" Value="{DynamicResource PrimaryNormalSolidColorBrush}"/><Setter Property="TextElement.Foreground" TargetName="PART_ContentPresenter" Value="{DynamicResource PrimaryNormalSolidColorBrush}"/></Trigger><Trigger Property="IsChecked" Value="{x:Null}"><Trigger.EnterActions><BeginStoryboard x:Name="PART_BeginStoryboardIsCheckedNull"><Storyboard><DoubleAnimation Storyboard.TargetName="PART_InderminateMark"Storyboard.TargetProperty="(Path.RenderTransform).(ScaleTransform.ScaleX)" To="1" Duration="00:00:.2"EasingFunction="{StaticResource ExponentialEaseOut}"/></Storyboard></BeginStoryboard></Trigger.EnterActions><Trigger.ExitActions><RemoveStoryboard BeginStoryboardName="PART_BeginStoryboardIsCheckedNull"></RemoveStoryboard></Trigger.ExitActions></Trigger><MultiTrigger><MultiTrigger.Conditions><Condition Property="IsChecked" Value="False" /><Condition Property="IsMouseOver" Value="True" /></MultiTrigger.Conditions><Setter Property="BorderBrush" TargetName="PART_Border" Value="{DynamicResource PrimaryMouseOverSolidColorBrush}"/></MultiTrigger></ControlTemplate.Triggers></ControlTemplate></Setter.Value></Setter></Style></ResourceDictionary>

二、使用 Styles.CheckBox.xaml 代码如下。

<TextBlock Text="Checkbox" FontSize="20" Margin="0,20,0,0"/><WrapPanel Margin="0,10"><CheckBox Content="Option A"/><CheckBox Content="Option B" Margin="10,0" IsChecked="True"/><CheckBox Content="Option C" IsChecked="{x:Null}"/><CheckBox Content="Option D" Margin="10,0" IsEnabled="False"/></WrapPanel>

02


效果预览

鸣谢素材提供者element

源码地址如下

Github:https://github.com/WPFDevelopersOrg

Gitee:https://gitee.com/WPFDevelopersOrg

https://gitee.com/WPFDevelopersOrg/WPFDevelopers.Minimal

https://github.com/WPFDevelopersOrg/WPFDevelopers.Minimal

WPF开发者QQ群: 340500857 

Github:https://github.com/WPFDevelopersOrg

出处:https://www.cnblogs.com/yanjinhua

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

转载请著名作者 出处 https://github.com/WPFDevelopersOrg

a3e7f123259143c1ba83ef5773ea5908.png

扫一扫关注我们,

e7a660a4279b2d422c1ffa097229449d.gif

更多知识早知道!

1e148cdc11f8a4565259b7c9d266f133.gif

点击阅读原文可跳转至源代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/291151.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android之ndk-build -j4

1、提高编译速度 ndk-build -j4 就是指定4核编译 如果cpu是8核就指定-j8

oracle sql 输出,将数据从Oracle SQL Developer导出到Excel .xlsx

将数据从Oracle SQL Developer导出到Excel .xlsx我有一个小型项目&#xff0c;需要将Oracel SLQ Developer的数据导出到Excel(使用SLQ Developer中的命令而不是工具)&#xff0c;然后创build一个图表。 使用“假脱机”我可以导出到CSV精细(但无法在CSV中创build一个graphics)&a…

命名参考

CSS选择器命名及常用命名规范的命名也是Web标准中的重要一项&#xff0c;标准的命名可以使代码更加易读&#xff0c;而且利于搜索引擎搜索&#xff0c;比如定义了两个div&#xff0c;一个id命名为“div1”&#xff0c;另外一个命名为“News”&#xff0c;肯定第二个比较易读&am…

Theano3.2-练习之数据集及目标函数介绍

来自http://deeplearning.net/tutorial/gettingstarted.html#gettingstarted 一、下载 在后续的每个学习算法上&#xff0c;都需要下载对应的文档&#xff0c;如果想要一次全部下好&#xff0c;那么可以复制git上面的这个教程的资料&#xff1a; git clone git://github.com/li…

C#使用NPOI导出Excel文件

欢迎您成为我的读者&#xff0c;希望这篇文章能给你一些帮助。前言今天咱们一起来看看在C#中如何使用NPOI第三方控件进行数据的导出。关于NPOI插件网上资料很多&#xff0c;大家感兴趣的可以去看看。本文使用的版本是NPOI 2.5.1。大家可在包管理器NuGet或者下面网址进行下载。h…

Android之ActivityLifecycleCallbacks的得到当前的activity的状态

1、ActivityLifecycleCallbacks的介绍 Application通过此接口提供了一套回调方法,用于让开发者对Activity的生命周期事件进行集中处理,注意是在Application里面,路径如下 android.app.Application.ActivityLifecycleCallbacks要求API 14+ (Android 4.0+) ActivityLifecyc…

oracle使用max提升效率,Oracle调优之利用max与leftjoin来进行不同表之间匹配

需求有两个不同的表&#xff0c;A表是基础数据&#xff0c;B表根据A表的某个不重复关键字加其他一些条件查询出一条或几条数据&#xff0c;取其中一条数据。并且利用此数据某个关键字再在B表中查询下一层级数据&#xff0c;最终将A表的对应一条数据&#xff0c;B表查询出的两条…

开放产品开发(OPD):Archi 汉化工具下载

在OPD中&#xff0c;我们使用了ArchiMate 作为架构语言&#xff0c;这是一个高层、简单的描述语言&#xff0c;之前我也写过一系列相关的文字&#xff0c;架构语言ArchiMate &#xff0d; 开篇&#xff1a;企业架构语言ArchiMate介绍架构语言ArchiMate &#xff0d; 语言结构&a…

【数据库中间件】MyCat分表分库规则实现

2019独角兽企业重金招聘Python工程师标准>>> /*** * 先根据截取字段的日期分组&#xff0c;再根据字段值数据按天入表 * author Fx_demon * */ public class PartitionBySubstringRangeDateDay extends AbstractPartitionAlgorithm implements RuleAlgo…

Redis: Useful commands

SELECT X - Select database (the X must be int) CONFIG GET databases - Get databases numberINFO keyspace - List Databases info LUSHDB - Removes data from your connections CURRENT database. FLUSHALL - Removes data from ALL databases.查看数据…

svn之check out没有下载so文件原因和解决办法

1、问题 linux 环境 svn checkout 发现少了so文件 2、解决办法 然后去看出我在windows上面svn checkout下来的项目&#xff0c;发现有so文件&#xff0c;然后再去查看&#xff0c;我把这个项目svn commit到另外一个svn路径的时候有没有提交so文件&#xff0c;结果发现真的没…

[C# 项目实战]: 制作一个备忘录(经典)

01—概述前几天群里有人问如何制作备忘录&#xff0c;感觉这样一个小实例挺适合新手们入门学习使用&#xff0c;所以就抽空做了出来。界面如下图&#xff1a;这个备忘录主要包括了如下功能&#xff1a;① 备忘录信息的增、删、改、查&#xff1b;② 备忘录时间到了以后进行语音…

RedHat 5.4下构建postfix全功能电子邮(七)-extmail extman平台-(下集)

2019独角兽企业重金招聘Python工程师标准>>> RedHat 5.4下构建postfix全功能电子邮&#xff08;七&#xff09;-extmail extman平台-&#xff08;下集&#xff09; 三、设置邮件系统的图形化日志信息 [rootmail ~]# ln -sf /usr/local/apache2/htdocs/extman/addon…

Android之moveTaskToBack()方法实现手动隐藏当前Activity

1、moveTaskToBack()方法说明 moveTaskToBack()方法&#xff1a;在activity中调用 moveTaskToBack (booleannonRoot)方法即可将activity 退到后台&#xff0c;注意不是finish()退出&#xff0c;按下返回键是退出 参数说明&#xff1a; 参数为false——代表只有当前activity是t…

JNI中的内存管理(转)

源&#xff1a;JNI中的内存管理 JNI 编程简介 JNI&#xff0c;Java Native Interface&#xff0c;是 native code 的编程接口。JNI 使 Java 代码程序可以与 native code 交互——在 Java 程序中调用 native code&#xff1b;在 native code 中嵌入 Java 虚拟机调用 Java 的代码…

C# 异步方法的异常处理

在使用异步方法时&#xff0c;应该知道错误的一些特殊处理方式。所有 ErrorHandling 示例的代码都使用了如下名称空间&#xff1a;SystemSystem.Threading.Tasks从一个简单的方法开始&#xff0c;它在延迟后抛出一个异常&#xff1a;static async Task ThrowAfter(int ms, stri…

oracle 创建日志文件,oracle创建日志文件

一团网资讯一团资讯 > oracle > oracle创建日志文件oracle创建日志文件2018-04-14 15:39:48 发布者&#xff1a;来源网络创建日志文件的语法如下&#xff1a;alter database database_name add logfile[group group_number](file_name[,file_name[,...]])[SIZE numbe…

Mark Down 使用实例

为什么80%的码农都做不了架构师&#xff1f;>>> Mark Down 使用实例 MarkDown是一个非常轻量级的 【标记语言】&#xff0c;有点有很多&#xff0c;书写比较快速&#xff0c;学习成本低&#xff0c;统一的排版模式&#xff0c;可导出 PDF HTML 等文档格式&#xff…

Android之在后台不显示activity方法

1、设置excludeFromRecents Androidmanifest.xml&#xff0c;设置Activity的属性&#xff1a;Android:excludeFromRecents"true"true时不显示&#xff1b;false默认显示。 2、start activity intent flag startactivity的时候用intent flag:FLAG_ACTIVITY_EXCLUDE_FR…

教育管理系统——android家长客户端

最近做了一个android的小项目&#xff0c;服务器端已经搭建好了&#xff0c;使用了spring MVC作为后端技术&#xff0c;发布了一系列web接口来接受客户端提交的数据和返回客户端请求的数据&#xff0c;web端使用了ext js来作为前端技术。同时还需要一个android客户端和ios客户端…