当前位置: 首页 > news >正文

wpf-动态设置组件【按钮为例】样式

文章速览

  • 解决方案
  • 具体实现
    • Converter 部分
    • 创建样式
    • Binding样式

坚持记录实属不易,希望友善多金的码友能够随手点一个赞。
共同创建氛围更加良好的开发者社区!
谢谢~

解决方案

创建一个Converter,返回对应的style实现对应的修改
创建多个样式
将创建的样式与Converter的属性绑定
利用Binding 将vm中的属性作为Converter的传参实现动态样式功能

具体实现

Converter 部分

创建一个Converter根据传参,返回相应的样式

    public class ConditionToStyleConverter : IValueConverter{public Style CurrentStyle { get; set; }public Style OptionalStyle { get; set; }public object Convert(object value, Type targetType, object parameter, CultureInfo culture){return (bool)value ? CurrentStyle : OptionalStyle ;}public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture){return new InvalidOperationException();}}
}

创建样式

<Grid.Resources><Style x:Key = "FirstStyle" TargetType="{x:Type Button}" BasedOn = "{StaticResource OptionalStyle}"/><Style x:Key = "FirstStyle" TargetType="{x:Type Button}" BasedOn = "{StaticResource CurrentStyle}"/><local:ConditionToStyleConverterx:Key = "ConditionToStyleConverter"CurrentStyle = "{StaticResource CurrentStyle}"OptionalStyle = "{StaticResource OptionalStyle}"/>
</Grid.Resources>

Binding样式

<Button Style="{Binding IsSucceed}",Converter = {StaticResource ConditionToStyleConverter}"/>

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Ubuntu 18.04搭建RISCV和QEMU环境
  • 磁盘阵列raid
  • 【机器学习】深度学习概论(二)
  • Java中final、finally和finalize方法的区别
  • Python实现张万森下雪了的效果
  • Linux 编写脚本定时发送天气预报
  • count distinct在spark中的运行机制
  • 大数据应用发展史:从搜索引擎时代到机器学习时代
  • AI赋能金融创新:技术驱动的未来金融革命
  • 水库大坝安全监测设计与施工经验
  • Golang 通用代码生成器仙童已发布 2.4.0 电音仙女尝鲜版二及其介绍视频,详细介绍了三大部分生成功能群
  • 城市分站优化系统源码:提升百度关键排名 附带完整的搭建教程
  • 2022第十届中国互联网测试开发大会(MTSC2022)-核心PPT资料下载
  • IOC推导和本质
  • MySQL聚簇索引和非聚簇索引的区别
  • [deviceone开发]-do_Webview的基本示例
  • 《Java8实战》-第四章读书笔记(引入流Stream)
  • ECMAScript6(0):ES6简明参考手册
  • Fabric架构演变之路
  • Git 使用集
  • js 实现textarea输入字数提示
  • JSONP原理
  • python docx文档转html页面
  • Python中eval与exec的使用及区别
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • Vultr 教程目录
  • Yeoman_Bower_Grunt
  • 给初学者:JavaScript 中数组操作注意点
  • 回流、重绘及其优化
  • 基于阿里云移动推送的移动应用推送模式最佳实践
  • 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的?
  • 容器服务kubernetes弹性伸缩高级用法
  • 如何进阶一名有竞争力的程序员?
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • Hibernate主键生成策略及选择
  • ​​​​​​​STM32通过SPI硬件读写W25Q64
  • # Redis 入门到精通(八)-- 服务器配置-redis.conf配置与高级数据类型
  • # 利刃出鞘_Tomcat 核心原理解析(七)
  • # 数仓建模:如何构建主题宽表模型?
  • $(this) 和 this 关键字在 jQuery 中有何不同?
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (20)docke容器
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (vue)el-cascader级联选择器按勾选的顺序传值,摆脱层级约束
  • (翻译)terry crowley: 写给程序员
  • (附源码)c#+winform实现远程开机(广域网可用)
  • (附源码)springboot高校宿舍交电费系统 毕业设计031552
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (南京观海微电子)——I3C协议介绍
  • (深入.Net平台的软件系统分层开发).第一章.上机练习.20170424
  • (算法二)滑动窗口
  • (一) storm的集群安装与配置