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

文章速览

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

解决方案

创建一个Converter,返回对应的style实现对应的修改

创建多个样式

将创建的样式与Converter的属性绑定

利用Binding 将vm中的属性作为Converter的传参实现动态样式功能

具体实现

Converter 部分

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

csharp 复制代码
    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();
        }
    }
}

创建样式

xml 复制代码
<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样式

xml 复制代码
<Button Style="{Binding IsSucceed}",Converter = {StaticResource ConditionToStyleConverter}"/>
相关推荐
晓纪同学19 小时前
WPF-09 命令系统
wpf
晓纪同学21 小时前
WPF-10资源系统
wpf
七夜zippoe1 天前
DolphinDB集群部署:从单机到分布式
分布式·wpf·单机·dolphindb·分集群
波波0072 天前
写出稳定C#系统的关键:不可变性思想解析
开发语言·c#·wpf
bugcome_com2 天前
从 MVVMLight 到 CommunityToolkit.Mvvm:MVVM 框架的现代化演进与全面对比
wpf
笺上知微2 天前
基于HelixToolkit.SharpDX 渲染3D模型
wpf
晓纪同学4 天前
WPF-03 第一个WPF程序
大数据·hadoop·wpf
光电大美美-见合八方中国芯4 天前
用于无色波分复用光网络的 10.7 Gb/s 反射式电吸收调制器与半导体光放大器单片集成
网络·后端·ai·云计算·wpf·信息与通信·模块测试
晓纪同学4 天前
WPF-02体系结构
wpf
晓纪同学4 天前
WPF-01概述
wpf