zoukankan      html  css  js  c++  java
  • 22.1.7 样式的TemplateBinding以及转化器颜色转化

    想写一个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就毫无问题了

    收工过周末鸟!

  • 相关阅读:
    数据库反范式~认识三大范式
    王家林的“云计算分布式大数据Hadoop实战高手之路从零开始”的第五讲Hadoop图文训练课程:解决典型Hadoop分布式集群环境搭建问题
    linux网络编程之System V 信号量(三):基于生产者消费者模型实现先进先出的共享内存段
    html知识点总结
    [置顶] HTML5开源RPG游戏引擎lufylegendRPG 1.0.0发布
    通过Android trace文件分析死锁ANR
    黄金连分数 蓝桥杯
    vxworks 6.9.3.1
    poj 3468 A Simple Problem with Integers(线段树区区)
    关于Java序列化的一些高级用法
  • 原文地址:https://www.cnblogs.com/rinroll/p/15776002.html
Copyright © 2011-2022 走看看