ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

22.1.7 样式的TemplateBinding以及转化器颜色转化

2022-01-07 17:35:26  阅读:153  来源: 互联网

标签:200 TemplateBinding https Color 转化 22.1 FromArgb com


想写一个checkbox,由border和textblock组成。通过一个变量控制textblock的文字内容和背景色

文字转化器直接返回string就行, 但颜色转化器最开始是以为返回Color属性。

因此尝试了:

一、

https://www.cnblogs.com/yangfengwu/p/6135941.html

1.创建Color实例的参数成份为4种颜色成份
Color c = Color.FromArgb(100,200,200,200);//第1个参数为透明度(alpha)参数,其后为红,绿和蓝.
2.只接受红,绿,蓝三种原色,透明度设置为默认,即完全不透明.

Color结构的各属性颜色对照表

https://www.cnblogs.com/tracine0513/p/3611309.html

 

但一直没成功,后面看到

https://blog.csdn.net/huhbca/article/details/79331884

方法五:

    Brush br = new SolidColorBrush(Color.FromArgb(A, R, G, B));

    buttonName.Background = br;

才知道返回brush才能给background等属性。

 

二、

接着,在样式中,因为每个控件的background需要绑定不同的变量,因此需要用到TemplateBinding

但看了几篇相关文章并没有明白(其实是基础缺太多没沉下心看)

C# WPF的Binding使用说明

https://www.cnblogs.com/yzw123/p/15503559.html

WPF快速入门系列(2)——深入解析依赖属性 

https://www.cnblogs.com/zhili/p/WPFDependencyProperty.html

WPF样式(Style)入门

https://blog.csdn.net/qq_34802416/article/details/78231575

 

在看到下面的内容

https://www.cnblogs.com/wesson2019-blog/p/13152503.html

 

 

 

于是在经过尝试后发现,TemplateBinding就是和最终(样式目标)控件的属性直接绑定,只要传递对象的属性一致就行

所以像checkbox样式中的textblock的Text="{TemplateBinding Content}"。因为checkbox属性只有content

那么Background="{TemplateBinding Background}"就ok了

 

三、关于Color.FromArgb()的alpha以及阴影引发的无奈bug

在设置好样式遇到另一个问题就是用Color.FromArgb()显示的颜色比参考颜色表的淡很多,而且加上DropShadowEffect后本来的颜色会加深

甚至用上了ps取颜色rgb值,最终显示的颜色还是淡

甚至还搜了

 

到最后从怀疑自己眼睛到怀疑自己电脑屏幕,折腾了一个来小时

猛然发现转化器里

 

 因为Color.FromArgb()是直接从网上粘过来的,对,用的就是一里面的那个Color c = Color.FromArgb(100,200,200,200)

 

真又是被自己蠢哭的一天

 

四、

最后对控件的手感做了优化,原本checkbox的选择框是用border画的⚪

但是没法点⚪来选中,只能通过点文字,所以一直以为只能点文字选中。

在一次偶然点击⚪也选中后,发现其实是能通过⚪选中了

遂意识到不是不能点,是border画的⚪是空心的,只能点圆圈

直接给border加上background就毫无问题了

 

 

收工过周末鸟!

 

标签:200,TemplateBinding,https,Color,转化,22.1,FromArgb,com
来源: https://www.cnblogs.com/rinroll/p/15776002.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有