WPF的转换器中使用Brush应注意问题

1、Brushes用错了命名空间将导致程序无法正确工作。笔者曾写了一个flag值转换为相应的Brush,由于不小心Using了一个错误的命名空间(System.Drawing)导致Xaml文件界面元素Fill绑定属性总出不来应有的效果。最后费了好大劲才发现,替换为正确的命名空间(System.Windows.Media)后立马就解决了。特此留下随笔备忘。

2、下面是一个IMultiValueConverter的例子:

<Window x:Class="WpfApplication16.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:my="clr-namespace:WpfApplication16" Title="Window1" Height="300" Width="300"> <Window.Resources> <my:RgbConverter x:Key="RgbConverter" /> </Window.Resources> <Window.Background> <SolidColorBrush> <SolidColorBrush.Color> <MultiBinding Converter="{StaticResource RgbConverter}"> <Binding Path="Value" ElementName="redSlider" /> <Binding Path="Value" ElementName="greenSlider" /> <Binding Path="Value" ElementName="blueSlider" /> </MultiBinding> </SolidColorBrush.Color> </SolidColorBrush> </Window.Background> <StackPanel> <Slider Minimum="0" Maximum="255" x:Name="redSlider" /> <Slider Minimum="0" Maximum="255" x:Name="greenSlider" /> <Slider Minimum="0" Maximum="255" x:Name="blueSlider" /> </StackPanel> 
</Window> 
public class RgbConverter : IMultiValueConverter 
{ #region IMultiValueConverter Members public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture) { var r = System.Convert.ToByte(values[0]); var g = System.Convert.ToByte(values[1]); var b = System.Convert.ToByte(values[2]); return Color.FromRgb(r, g, b); } public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture) { throw new NotImplementedException(); } #endregion 
} 

 3、多值参数如何处理,譬如:希望value为真时返回ConvertParameter指定R,G,B的颜色值Brush,否则返回透明Brush。

<Border Grid.ColumnSpan="3" BorderBrush="{Binding Converter={StaticResource BoolToSolidColorBrushConverter}, ConverterParameter='255,0,0', Path=IsInclusive}" BorderThickness="2"><Image Source="{Binding Image}" Opacity="{Binding ImageOpacity}" />
</Border>
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{Brush result = Brushes.Red;if (parameter != null){string[] rgb = parameter.ToString().Split(',');if (rgb.Length == 3){byte r = 0;byte.TryParse(rgb[0], out r);byte g = 0;byte.TryParse(rgb[1], out g);byte b = 0;byte.TryParse(rgb[2], out b);result = new SolidColorBrush(Color.FromRgb(r, g, b));}}if (value == null) return Brushes.Transparent;string valueString = value.ToString();if (value.ToString() == "1"){valueString = "True";}else if (value.ToString() == "0"){valueString = "False";}bool boolValue = false;if (!bool.TryParse(valueString, out boolValue)){boolValue = false;}if (boolValue) return result;return Brushes.Transparent;
}

 

转载于:https://www.cnblogs.com/chriskwok/archive/2012/08/17/2644201.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/266908.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

XamarinAndroid组件教程RecylerView适配器设置动画示例

XamarinAndroid组件教程RecylerView适配器设置动画示例 【示例1-3】下面将在RecylerView的子元素进行滚动时&#xff0c;使用适配器动画。具体的操作步骤如下&#xff1a; &#xff08;1&#xff09;创建一个名为RecylerViewAnimatorsAdapter的项目。 &#xff08;2&#xff09…

linux 查询 lib信息,怎么查看linux是否使用 libarchive

1、操作系统级别的共享库和基础的系统工具库比方说libc.so, libz.so, libpthread.so等等&#xff0c;这些系统库会被放在/lib和/usr/lib目录下面&#xff0c;如果是64位操作系统&#xff0c;还会有/lib64和/usr /lib64目录。如果操作系统带有图形界面&#xff0c;那么还会有/us…

oracle oemrpt数据库显现

好多初学者都会找不到oemrpt数据库 oracle中只是做了隐藏 需要在节点上右击选择“刷新所有节点”后 你就可以在数据库中看到oemrpt数据库了转载于:https://blog.51cto.com/wujingfeng/968460

php计算上个月是几月份

PHP计算上个月的时间&#xff0c; $date date("Y-m-d"); $arr explode(-,$date); foreach ($arr as $key>$value){ // echo $value."<br />"; } switch ($arr[1]){case 1:$od_year $arr[0]-1;echo "上一个月的时间为".$od_year.…

linux程序设计知识点整理,笔试面试中C/C++重要知识点整理

4. 类与面向对象编程4.1 类接口与实现的概念&#xff1a;每个类都定义了一个接口(可以不是很确切的理解为类中访问级别为public的函数为接口)和一个实现。接口由使用该类的代码需要执行的操作组成。实现一般包括该类所需要的数据。实现还包括定义该类需要的但又不供一般性使用…

mysql中的blob和text区别

mysql中的blob和text区别 经过查询资料发现 除了blob 还有tinyblob longblob mediumblob 当然text还有tinytext mediumtext longtext 都是最为大的存储 本质区别主要是blob是二进制字符串(字节字符串) text是非二进制字符串(字符字符串) 在TEXT或BLOB列的存储或检索过程中&…

Linux下怎样安装tomcat,Linux下安装Tomcat的步骤是怎样的?

1)下载j2sdk &#xff0c;如jdk-6u1-linux-i586-rpm。bin2)在终端中转到jdk-6u1-linux-i586-rpm。bin所在的目录&#xff0c;输入命令 #chmod 755 jdk-6u1-linux-i586-rpm。bin&#xff1b;//添加执行的权限。3)执行命令 #。/jdk-6u1-linux-i586-rpm。bin&#xff1b;//生成jdk…

题解 P1876 【开灯】

题目链接 编者说得对一道很明显的数学题&#xff0c;相信大家小学都做过。通俗一点&#xff0c;就是找因数为奇数个的数。而这一类的数。明显的是平方数。所以就是找n以内的平方数。废话少说&#xff0c;直接上题解。 #include<bits/stdc.h> using namespace std; int ma…

OpenJudge

2787:算24 查看提交统计提问时间限制:3000ms内存限制:65536kB描述给出4个小于10个正整数&#xff0c;你可以使用加减乘除4种运算以及括号把这4个数连接起来得到一个表达式。现在的问题是&#xff0c;是否存在一种方式使得得到的表达式的结果等于24。这里加减乘除以及括号的运算…

java poi excel 生成表格的工具封装

效果如下&#xff1a; 代码如下&#xff1a; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.util.ArrayList; import java.util.Arrays; import java.util.List;import org.apache.poi.hssf.u…

在两个有序的数组中找第N个数,二分查找 O(lgm+lgn)级

在两个有序的数组中找第N个数&#xff0c;O(lgmlgn)级 分类&#xff1a; 算法2009-10-09 20:52 981人阅读 评论(3) 收藏 举报问题描述&#xff1a; Give a divide and conquer algorithm for the following problem:you are given two sorted lists of size m and n, and are a…

Linux启动shell的快捷方式,Linux下为可执行shell脚本文件(.sh),制作桌面启动快捷方式...

自装软件默认安装目录为 /usr/local,而生成的应用程序可执行图标(文件)放置在/usr/local/share/applications 目录下&#xff0c;以XXX.desktop 文件形式存在。以xxx.desktop为例&#xff0c;用vim打开文件内容如下&#xff1a;[Desktop Entry]EncodingUTF-8Namexxx//可执行文件…

关于java嵌入式数据库的选择,强烈建议H2 嵌入式数据库

2019独角兽企业重金招聘Python工程师标准>>> 不听红薯言&#xff0c;吃亏在眼前。 先发表个人意见&#xff0c;Derby是垃圾&#xff0c;H2王道。 这段时间开发movingLife合租记账软件过程中&#xff0c;开始是在MYSQL上做开发&#xff0c;要发布的时候&#xff0c;一…

linux可变剪切分析,SpliceR:一个用RNA-Seq数据进行可变剪接分类和预测潜在编码区域的R包...

SpliceR&#xff1a;一个用RNA-Seq数据进行可变剪接分类和预测潜在编码区域的R包Kristoffer Knudsen, Johannes Waage5Dec2013翻译&#xff1a;斑斑<23920620>2016年7月14日欢迎加入生物信息QQ群78750864讨论相关问题1简介SpliceR是一个可以对转录本完整isoform(剪接模式…

程序设计和c语言ppt,程序设计和C语言.ppt

《程序设计和C语言.ppt》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《程序设计和C语言.ppt(25页珍藏版)》请在装配图网上搜索。1、2020/7/22,1,C程序设计,课程别名&#xff1a;高级语言程序设计 C语言程序设计 C语言 软件平台&#xff1a;Turbo C 2.0(技术核心) Wi…

算法导论

第二章 #include <stdio.h> #include <stdlib.h> #include <time.h> //插入排序 void InsertSort(int A[], int n) {int i, j, key;for(i1; i<n; i){key A[i];j i-1;while(A[j] > key && j>0){A[j1] A[j];j--;}A[j1] key;} }//…

MyBatis传入参数为list、数组、map写法

1.foreach简单介绍&#xff1a;foreach的主要用在构建in条件中&#xff0c;它可以在SQL语句中进行迭代一个集合。foreach元素的属性主要有item&#xff0c;index&#xff0c;collection&#xff0c;open&#xff0c;separator&#xff0c;close。item表示集合中每一个元素进行迭…

c语言自定义浮点函数,C语言float

C语言float教程C语言float定义详解语法float varname value;参数参数描述float定义 float 类型变量使用的类型。varname变量名。value可选&#xff0c;变量的初始值。说明使用 float 定义了一个 float 类型的变量 varname&#xff0c;并赋初值为 value。C语言float详解说明描述…

EF CodeFirst的步骤

1 创建各个实体类2 创建一个空数据模型&#xff0c;然后删除掉&#xff0c;为了引入Entity Framework和System.Data.Entity3 为实体类增加标注4 为实体增加导航属性5 在App.config configuration标签里面增加connectionStrings标签&#xff0c;并增加连接字符串6 创建数据操作类…

Block CONNECT method in httpd.conf

为什么80%的码农都做不了架构师&#xff1f;>>> RewriteEngine on RewriteCond %{REQUEST_METHOD} ^(CONNECT|TRACE)$ RewriteRule ^.*$ - [L,F] ProxyRequests Off ProxyRequest should be set to off, unless you have security protect in your web server. 转…