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

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

解决方案

创建一个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:ConditionToStyleConverter
		 	x:Key = "ConditionToStyleConverter"
		 	CurrentStyle = "{StaticResource CurrentStyle}"
		 	OptionalStyle = "{StaticResource OptionalStyle}"/>
</Grid.Resources>

Binding样式

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

相关推荐

  1. wpf-动态设置组件按钮样式

    2023-12-30 10:56:04       55 阅读
  2. C#WPF设置圆角按钮样式

    2023-12-30 10:56:04       33 阅读
  3. wpf 按钮禁用样式

    2023-12-30 10:56:04       34 阅读
  4. WPF设置全局样式

    2023-12-30 10:56:04       30 阅读
  5. WPF-控件样式设置

    2023-12-30 10:56:04       27 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-30 10:56:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-30 10:56:04       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-30 10:56:04       82 阅读
  4. Python语言-面向对象

    2023-12-30 10:56:04       91 阅读

热门阅读

  1. SQL面试题挑战13:分组topN

    2023-12-30 10:56:04       65 阅读
  2. CentOS 安装WebLogic

    2023-12-30 10:56:04       62 阅读
  3. centos搭建kubernetes集群步骤

    2023-12-30 10:56:04       46 阅读
  4. docker -v 和docker --device 有什么区别

    2023-12-30 10:56:04       56 阅读
  5. 自动化测试:selenium总结

    2023-12-30 10:56:04       62 阅读
  6. 如何准备 Azure 信息保护云退出计划

    2023-12-30 10:56:04       55 阅读
  7. 【Linux】Ubuntu22.04版本下实现gcc版本的快速切换

    2023-12-30 10:56:04       66 阅读
  8. PyTorch中的 Dataset、DataLoader 和 enumerate()

    2023-12-30 10:56:04       56 阅读
  9. Linux添加一个指令代替指定指令

    2023-12-30 10:56:04       56 阅读
  10. 79. Word Search

    2023-12-30 10:56:04       66 阅读