WPF MultiBinding,多值转化器IMultiValueConverter,自制调色板 palette
public class RGBConverter : IMultiValueConverter
{
//正向修改,整合颜色值
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
if(values==null || values.Length<1)
{
return null;
}
byte r = System.Convert.ToByte(values[0]);
byte g = System.Convert.ToByte(values[1]);
byte b = System.Convert.ToByte(values[2]);
Color col = Color.FromRgb(r, g, b);
SolidColorBrush brush = new SolidColorBrush(col);
return brush;
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
return null;
}
}
<Window.Resources>
<local:RGBConverter x:Key="rgbConverter"/>
<Style TargetType="Slider">
<Setter Property="BorderBrush" Value="Silver"/>
<Setter Property="BorderThickness" Value="3"/>
</Style>
</Window.Resources>
<Grid >
<Grid.RowDefinitions>
<RowDefinition Height="30"/>
<RowDefinition Height="30"/>
<RowDefinition Height="30"/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="50"/>
<ColumnDefinition Width="50"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Label Grid.Row="0" Grid.Column="0" Content="Red: " HorizontalAlignment="Left" VerticalAlignment="Top"/>
<Label Grid.Row="1" Grid.Column="0" Content="Green:" HorizontalAlignment="Left" VerticalAlignment="Top"/>
<Label Grid.Row="2" Grid.Column="0" Content="Blue:" HorizontalAlignment="Left" VerticalAlignment="Top"/>
<TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding ElementName=slider_R,Path=Value}" VerticalAlignment="Bottom"/>
<TextBlock Grid.Row="1" Grid.Column="1" Text="{Binding ElementName=slider_G,Path=Value}" VerticalAlignment="Bottom" />
<TextBlock Grid.Row="2" Grid.Column="1" Text="{Binding ElementName=slider_B,Path=Value}" VerticalAlignment="Bottom"/>
<Slider x:Name="slider_R" Minimum="0" Maximum="255" IsSnapToTickEnabled="True" Grid.Row="0" Grid.Column="2" HorizontalAlignment="Stretch" />
<Slider x:Name="slider_G" Minimum="0" Maximum="255" IsSnapToTickEnabled="True" Grid.Row="1" Grid.Column="2" HorizontalAlignment="Stretch" />
<Slider x:Name="slider_B" Minimum="0" Maximum="255" IsSnapToTickEnabled="True" Grid.Row="2" Grid.Column="2" HorizontalAlignment="Stretch"/>
<Rectangle Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="3" Stroke="Black">
<Rectangle.Fill>
<MultiBinding Converter="{StaticResource ResourceKey=rgbConverter}">
<Binding ElementName="slider_R" Path="Value"/>
<Binding ElementName="slider_G" Path="Value"/>
<Binding ElementName="slider_B" Path="Value"/>
</MultiBinding>
</Rectangle.Fill>
</Rectangle>
</Grid>

WPF MultiBinding,多值转化器IMultiValueConverter,自制调色板 palette的更多相关文章
- 【转】WPF MultiBinding 和 IMultiValueConverter
WPF MultiBinding 和 IMultiValueConverter 时间 2015-02-02 19:43:00 博客园精华区 原文 http://www.cnblogs.com/wo ...
- 总结:WPF中MultiBinding多值绑定的方法
原文:总结:WPF中MultiBinding多值绑定的方法 一.Xaml中绑定代码: <TextBlock Grid.Row="5" Grid.Column="3 ...
- jQuery源码分析系列(36) : Ajax - 类型转化器
什么是类型转化器? jQuery支持不同格式的数据返回形式,比如dataType为 xml, json,jsonp,script, or html 但是浏览器的XMLHttpRequest对象对数据的 ...
- 正确处理WPF中Slider值改变事件的方式
最近在用WPF数据绑定重写一下播放器项目时遇到的关于Slider的问题,在窗体透明度调节和播放进度调节上用了Slider控件.调节窗体透明度我是 这么想的:将窗体的Opacity属性的值与Slider ...
- SpringMVC09异常处理和类型转化器
public class User { private String name; private Integer age; public String getName() { return name; ...
- struts2类型转化器详解(带例子)
Struts2有两种类型转化器: 一种局部,一种全局. 如何实现: 第一步:定义转化器 第二部:注册转化器 下面做一个局部类型转化器的实例. 我们在上面一片日志说过有个变量date类型的.只有我们输入 ...
- flask之web网关、三件套、配置、路由(参数、转化器及自定义转化器)、cbv、模板语言、session
目录 1.wsgiref.py 2.werzeug.py 3.三件套 4.配置文件 5.路由本质 6.cbv.py 7.路由转化器 8.自定义转化器 9.模板语言 10.session原理 11.te ...
- flask中的endpoint、自定义转化器、与djnago中session区别、利用装饰器实现登录认证
flask路由中的endpoint 与自定义转化器 ''' endpoint主要用于 反向解析, 例如:login函数中配的路由是/login,其中endpoint='lg' 则在其他函数,可以用 u ...
- SpringBoot(十七):SpringBoot2.1.1数据类型转化器Converter
什么场景下需要使用类型化器Converter? springboot2.1.1在做Restful Api开发过程中往往希望接口直接接收date类型参数,但是默认不加设置是不支持的,会抛出异常:系统是希 ...
随机推荐
- Ansible配置执行远程主机的ssh端口号
在线上的环境中,服务端的ssh会有进行变更的情况 例如:有些服务器的ssh端口号是 34567 等情况,那么该如何配置呢? 编辑 /etc/ansible/hosts [servers] 配置完毕后, ...
- Redis缓存实战教程
目录 Redis缓存 使用缓存Redis解决首页并发问题 1.缓存使用的简单设计 2.Redis的整合步骤 A 将Redis整合到项目中(Redis+Spring) B 设计一个数据存储策越 3.Re ...
- R 基于朴素贝叶斯模型实现手机垃圾短信过滤
# 读取数数据, 查看数据结构 df_raw <- read.csv("sms_spam.csv", stringsAsFactors=F) str(df_raw) leng ...
- 关于如何自定义修改pytest-html报告深度学习总结
第一.pytest-html执行命令总结: pytest test_case.py --html=report.html --self-contained-html 直接html独立显示pytest ...
- CS231n:
Bayesian Hyperparameter Optimization is a whole area of research devoted to coming up with algorithm ...
- tf.tile() 用法介绍
tile() 平铺之意,用于在同一维度上的复制 tile( input, #输入 multiples, #同一维度上复制的次数 name=None ...
- springboot2.1+redis多数据源的配置
springboot系列学习笔记全部文章请移步值博主专栏**: spring boot 2.X/spring cloud Greenwich. 由于是一系列文章,所以后面的文章可能会使用到前面文 ...
- js 浮点型运算出错的原因和解决方法
在工作中经常需要进行数字运算,当然也会遇到浮点型数字的运算,但是运算结果却并不是想要. 这种小孩子都会做的简单运算,强大的计算居然算算错?原来,计算机的运算都需要转成二制运算,而二进制和实现位数限制有 ...
- 手机爬虫--appium
adb 安装:下载android-sdk压缩包,解压后其中有adb.exe,配置环境变量后即可 cmd下'adb'即可启动adb客户端 adb devices –l 查看已连接的模拟器 adb co ...
- nginx配置代理时参数说明