WPF多值转换器

背景:实现Slider拖动可以调整rgb

单转换器:WPF中数据绑定转换器Converter-CSDN博客

在View中:

XML 复制代码
<StackPanel Orientation="Vertical">
    <Slider x:Name="slider_R" Minimum="0" Maximum="255" Width="200" Margin="20"/>
    <Slider x:Name="slider_G" Minimum="0" Maximum="255" Width="200" Margin="20"/>
    <Slider x:Name="slider_B" Minimum="0" Maximum="255" Width="200" Margin="20"/>

    <Path VerticalAlignment="Center" HorizontalAlignment="Center">
        <Path.Data>
            <EllipseGeometry Center="50, 50" RadiusX="50" RadiusY="50"/>
        </Path.Data>

        <Path.Fill>
            <MultiBinding Converter="{StaticResource rmc}">
                <Binding ElementName="slider_R" Path="Value"/>
                <Binding ElementName="slider_G" Path="Value"/>
                <Binding ElementName="slider_B" Path="Value"/>
            </MultiBinding>
        </Path.Fill>
    </Path>
</StackPanel>

-- Fill中绑定的资源是Window.Resources中引入进来的转换器key

-- 转换器返回的是一个SolidBrush,其实就是相当于在这个地方写个SolidBrush

转换器中:

cs 复制代码
public class rgbMultiConventer : IMultiValueConverter
{
    public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
    {
        if (values==null || values.Length < 2)
        {
            return null;
        }

        byte r = System.Convert.ToByte(values[0]);
        byte g = System.Convert.ToByte(values[1]);
        byte b = System.Convert.ToByte(values[2]);

        Color color = Color.FromRgb(r, g, b);

        return new SolidColorBrush(color);
    }

    public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

-- 就是转换器类接上接口"IMultiValueConverter"

相关推荐
夏子曦3 小时前
C#内存管理深度解析:从栈堆原理到高性能编程实践
开发语言·c#
分布式存储与RustFS3 小时前
告别复杂配置:用Milvus、RustFS和Vibe Coding,60分钟DIY专属Chatbot
wpf·文件系统·milvus·对象存储·minio·rustfs·vibe
William_cl7 小时前
C# MVC网页调试的方法
开发语言·c#·mvc
小小的技术员7 小时前
C# 无实体生成JSON字符串
c#·json
L X..13 小时前
Unity反射调用 ReactiveProperty<T>(泛型类型)内部方法时崩溃
unity·c#·游戏引擎·.net
攻城狮CSU15 小时前
WPF 绑定机制实现原理
wpf
攻城狮CSU15 小时前
WPF 之数据绑定一(Data Binding)
wpf
缺点内向16 小时前
C# 中 Excel 工作表打印前页面边距的设置方法
c#·.net·excel
雪芽蓝域zzs1 天前
uniapp AES 加密解密
开发语言·uni-app·c#
wuty0071 天前
记录一下 WPF进程 SendMessage 发送窗口消息进行进程间通信,存在进程权限无法接受消息的问题
wpf·进程间通信·sendmessage·进程权限