背景

很多时候我们使用WPF开发界面的时候经常会用到各种空间,很多时候我们需要去自定义控件的样式来替换默认的样式,今天通过两个方法来替换WPF中的CheckBox样式,透过这两个例子我们可以掌握基本的WPF样式的开发如何定义ControlTemplate以及使用附加属性来为我们的控件增加新的样式。

常规使用

我们在使用CheckBox的时候,原始的样式有时不能满足我们的需求,这是我们就需要更改其模板,比如我们常用的一种,在播放器中“播放”、“暂停”按钮,其实这也是一种CheckBox,只不过我们只是修改了其相关的模板罢了,下面贴出相关代码:

进阶用法

上面的使用较为简单,下面我们通过一个更加复杂一些的例子来增加对自定义控件模板的理解,我们先来看看我们定义的样式。

Data="{Binding (local_ctrl:GeometryAP.IconGeometry), RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type CheckBox}}}"

Fill="{Binding (local_ctrl:GeometryAP.IconFill), RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type CheckBox}}}"/>

Margin="{TemplateBinding Padding}"

RecognizesAccessKey="True"

SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"

HorizontalAlignment="Left"

VerticalAlignment="Center"/>

Grid.Column="2"

Margin="1"

BorderBrush="Transparent"

BorderThickness="1"

Background="Transparent"

HorizontalAlignment="Left"

VerticalAlignment="Center">

Stretch="Uniform"

Data="{StaticResource geometryCheck}"

Fill="LightSeaGreen" Margin="1" Opacity="0"/>

后面我们再来看看,我们使用CheckBox的地方。

IsChecked="{Binding VM.IsHorizontal,ElementName=_this}" Content="Horizontal"

Style="{StaticResource CheckBoxStyle}"

local_ctrl:GeometryAP.IconGeometry="{StaticResource geometryDirection}"

local_ctrl:GeometryAP.IconFill="LightSeaGreen"/>

这个地方我们为CheckBox增加了两个附加属性IconGeometry、IconFill这样我们就能够将这两个附加属性绑定到CheckBox样式中的Path里面的Data和Fill依赖项属性上面,通过上面的过程我们就能够定义各种各样的CheckBox样式了,下面我们看看我们定义的这两个附加属性具体的代码。

public class GeometryAP : DependencyObject

{

public static PathGeometry GetIconGeometry(DependencyObject obj)

{

return (PathGeometry)obj.GetValue(IconGeometryProperty);

}

public static void SetIconGeometry(DependencyObject obj, PathGeometry value)

{

obj.SetValue(IconGeometryProperty, value);

}

public static Brush GetIconFill(DependencyObject obj)

{

return (Brush)obj.GetValue(IconFillProperty);

}

public static void SetIconFill(DependencyObject obj, Brush brush)

{

obj.SetValue(IconFillProperty, brush);

}

public static readonly DependencyProperty IconGeometryProperty = DependencyProperty.RegisterAttached("IconGeometry", typeof(PathGeometry), typeof(GeometryAP));

public static readonly DependencyProperty IconFillProperty = DependencyProperty.RegisterAttached("IconFill", typeof(Brush), typeof(GeometryAP), new PropertyMetadata(Brushes.Transparent));

}

样式欣赏

checkbox wpf 背景图片_WPF的CheckBox样式总结相关推荐

  1. vue项目中背景图片写成行内样式不显示

    今天写代码的时候发现把背景图片写在行内样式中没法显示 <div class="template-card" style="background-image:url( ...

  2. html背景图片横屏,CSS背景颜色 背景图片 居中 重复 固定样式background经验篇

    我们使用CSS Background样式属性,可以设置网页背景单一颜色.网页背景为图片.网页背景图片居中于网页.网页背景图片网页固定位置.网页背景图片中网页中重复平铺等css背景样式介绍与案例讲解. ...

  3. c# wpf 单选字体_WPF自定义控件与样式(1)-矢量字体图标(iconfont)

    一.图标字体 图标字体在网页开发上运用非常广泛,具体可以网络搜索了解,网页上的运用有很多例子,如Bootstrap.但在C/S程序中使用还不多,字体图标其实就是把矢量图形打包到字体文件里,就像使用一般 ...

  4. vue在行内标签中动态添加背景图片,还有其他样式

    <div :style="{'background-image': `url(${require('./image/1.png')}) no-repeat center center` ...

  5. 【Echarts】Echarts给title添加背景图片

    Echarts给title添加背景图片 通过rich自定义样式,在rich中添加背景图片,然后应用到title上 myChart.setOption({title: {show: true,//主标题 ...

  6. html如何把图片在背景图一半,img只显示图片一部分 或 css设置背景图片只显示图片指定区域...

    17:14 2016/3/22 img只显示图片一部分 或 css设置背景图片只显示图片指定区域 background-position: 100% 56%; 设置背景图片显示图片的哪个坐标区域,图片 ...

  7. html背景自动适应,css背景图片如何自适应?

    css可以使用background-size属性设置背景图片自适应,为背景图片设置background-size:cover;样式即可使背景图片自适应. css可以使用background-size属 ...

  8. html 背景图片不重复显示,css如何设置背景图片不重复?

    css设置背景图片,默认的样式是图片重复,有的时候页面只需要一个不重复的背景图片,这就需要使用到css背景图片重复属性background-repeat: no-repeat;进行设置. css使用b ...

  9. div背景图片不显示的问题

    现象:div背景图片不显示的问题 解决问题步聚: 1,改变一下控制div样式的css文件,例如:高设大点,或设一下边框的颜色,如果没改变的话,你知道什么原因了吧,样式的文件路径不对了. 2,一般错在第 ...

最新文章

  1. 【OpenCV 4开发详解】图像与视频的保存
  2. Deep Learning for 3D Point Clouds: A Survey 论文阅读
  3. Go语言中的struct的初始化。
  4. 隐知识:reloadData 方法之后,view并不会立即更新其contentSize
  5. 少儿编程python教材_少儿编程|Python环境安装
  6. 为什么多对多关系需要建立中间表_中间表是什么?和报表有什么关系?会带来怎样的问题?又如何解决?...
  7. C 20 协程初探
  8. sap生产工单报工_SAP系统PP (ProductionPlanning) 模块知识培训
  9. 双系统windows10扩容ubuntu16.04
  10. 深入分布式缓存之EVCache探秘开局篇(文末赠书)
  11. dedecms php5.4 无法退出后台,DedeCMS 织梦在 Windows 的 PHP5.4 环境下登录后台空白的解决办法...
  12. ros 机械臂复位_ROS入门学习之八机器人综合应用
  13. java提高篇(十三)-----字符串
  14. Atitit.软件仪表盘(2)--vm子系统--资源占用监测
  15. php 的sentmail支持ssl吗_php 的swoole 和websocket 连接wss
  16. 华为服务器设备型号查询,查看服务器机器型号
  17. 1179. 重新格式化部门表
  18. Remove annoying AD window when PopKart exits
  19. 怎么使用7zip进行分批压缩_7z解压软件(7-zip)分卷压缩怎么做?
  20. c#通用后台管理系统

热门文章

  1. 511遇见易语言数组加入成员
  2. Python 从零实现二分查找,大量动画演示
  3. C# NPOI对Excel 读、写、增、删 操作, dataGridView控件常用操作
  4. 正则表达式 只能输入 字母_数字_汉字
  5. 时间管理器⏰v0.1.5代码+⭐完整解析
  6. 环保行业应用终端--4G/5G环保数据采集仪及智慧环保解决方案
  7. 老妻少夫:性福美满,享受醉生梦死的极乐
  8. 致远OA二开整理(基础版,本地环境搭建,插件project设置,页面引入外部js文档)
  9. Db2数据库计算年龄
  10. 动态gmm模型学习笔记1-数据类型