Silverlight DataBinding Converter:根据binding对象调整显示
Silverlight DataBinding Converter:根据binding对象调整显示
我希望写一系列关于Silverlight DataBinding的文章,分别讲解Silverlight Binding中不同的功能。本文将会讲的是DataBinding中使用Converter。演示的demo是根据值显示一个小图标,当slider数值小于50的时候,显示绿色,当数值大于等于50时,显示红色。
本文中所有代码都可以在github中查看,git版本中采用了master-dev的方式。在master中可以查看每一个demo的最后完成,在dev中可以查看每一步的代码。
github地址:git@github.com:kiwiwin/silverlight-demo.git。文件夹名称databinding-converter-demo
1.首先定义显示界面
<Slider Height="23" HorizontalAlignment="Left" Width="120" Name="slider" VerticalAlignment="Center"
Minimum="0" Maximum="100" />
<Image Height="30" Width="30" Margin="5,0,0,0"
Source="Images/green.png" />
</StackPanel>
注意Image中的Source值为Images/green.png,只是因为我在Images下面放置了两个图片green.png和red.png作为演示用
2.让Image binding到slider value
这里需要首先让Image的Sourcebinding到Slider的Value上,ElementName赋值为slider,就让slider成为Image source的binding source,然后将Path赋值为Value,即binding到slider的Value属性上。
Source="{Binding ElementName=slider,Path=Value}"
3.slider value转化到imagesource string
Source需要的是一个字符串指向图片的来源,而slider.Value只是一个double型的属性,这就需要进行转换,就用到了databinding中的converter属性。
首先,添加一个类,用于作转换:
{
public class ColorToPicture : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
double num = (double)value;
return num < 50 ? "Images/green.png" : "Images/red.png";
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}
实现binding转换需要实现一个类,实现IValueConverter接口,而IValueConverter定义了两个接口,Convert和ConvertBack,Convert用于讲source转换成target的binding转换,而ConvertBack反之。因为这里我们不需要ConvertBack,所以不实现它。
4.在xaml中引入converter
在xaml中添加一个local的namespace。并且定义UserControl.Resources指明ColorToPicture
<UserControl.Resources>
<local:ColorToPicture x:Key="ColorToPicture" />
</UserControl.Resources>
</SPAN>
注意local:ColorToPicture的key是ColorToPicture
再修改Image Source:
Source="{BindingElementName=slider, Path=Value, Converter={StaticResourceColorToPicture}}" />
显示结果:
slider小于50:

slider大于50:

本文来自kiwi_coder的博客,原文地址:http://blog.csdn.net/kiwi_coder/article/details/8097018
Silverlight DataBinding Converter:根据binding对象调整显示的更多相关文章
- ColorTransform调整显示对象的颜色值
ColorTransform调整显示对象的颜色值: /** * * *------------------------------* * | *** 调整显示对象的颜色值 *** | * *----- ...
- 使用Visifire+ArcGIS API for Silverlight实现Graphic信息的动态图表显示
原文:使用Visifire+ArcGIS API for Silverlight实现Graphic信息的动态图表显示 首先来看一看实现的效果: PS:原始的程序中更新曲线数据时添加了过渡的效果,具体可 ...
- Vuforia图像追踪,动态创建的对象隐藏显示的坑
刚做的一个项目,使用Unity3D的Vuforia插件进行图像识别,其中有动态生成的游戏对象模型,地形模型放在ImageTarget下,作为ImageTarget的子物体. 动态生成的敌人则有Pref ...
- jquery判断对象是否显示或隐藏
if($('a.specail2').is(":visible")){ /**jquery判断对象是否显示或隐藏**/ $('a.one').hide(); $('a.specai ...
- silverlight漂亮的文件上传进度显示原理及示例
silverlight漂亮的文件上传进度显示原理及示例 作者:chenxumi 出处:博客园 2009/11/27 13:37:11 阅读 1219 次 概述:在网站根目录web.config里配 ...
- NX二次开发-UFUN获取对象的显示属性(图层,颜色,空白状态,线宽,字体,高亮状态)UF_OBJ_ask_display_properties
NX9+VS2012 #include <uf.h> #include <uf_modl.h> #include <uf_obj.h> UF_initialize( ...
- Flash(as3) 调整显示对象颜色
在游戏开发中改变显示对象的颜色是比较常见的操作,那么除了在FlashCS中调整,AS3又提供了怎样的方式呢? ColorTransform 这个类是轻量级的应用,其构造参数如下: ColorTrans ...
- [WPF系列]-DataBinding(数据绑定) 自定义Binding
自定义Binding A base class for custom WPF binding markup extensions BindingDecoratorBase Code: public c ...
- jface databinding:部分实现POJO对象的监测
在前一篇博文<jface databinding/PojoBindable实现对POJO对象的支持 >中,已经知道直接对POJO对象进行修改,是不能被绑定的UI组件知道的,在上一篇文章中 ...
随机推荐
- 解析XML字符串为json对象
var overtime='<?xml version="1.0" encoding="UTF-8"?><response><co ...
- MySql将查询结果插入到另外一张表
今天遇到一个业务需求是这样的:对在职员工超过55岁提醒.我想的思路是查询员工表,然后将超过55岁的人的信息存到另一个表,并且以消息的形式给用户提示,用户处理掉之后此消息失效(在数据库做标记). 不管是 ...
- Java 并发编程中使用 ReentrantLock 替代 synchronized 关键字原语
Java 5 引入的 Concurrent 并发库软件包中,提供了 ReentrantLock 可重入同步锁,用来替代 synchronized 关键字原语,并可提供更好的性能,以及更强大的功能.使用 ...
- C# 编程中的堆栈(Stack)和队列(Queue)
一.什么是堆?(Heap) 堆是无序的,是一片不连续的内存域,由用户自己来控制和释放,如果用户自己不释放的话,当内存达到一定的特定值时,通过垃圾回收器(GC)来回收. 是程序运行期 ...
- SUPEROBJECT序列数据集为JSON
// SUPEROBJECT 序列数据集 cxg 2017-1-12// {"data":[{"c1":1,"c2":1}]};// DEL ...
- 【grpc】项目启动缺少grpc架包引用
项目启动缺少grpc架包引用 导致 项目无法启动 解决方法: 在命令行执行 ./gradlew generateProto 下载完成之后 刷新gradle或者maven 再重启项目
- 【Todo】ssh的原理和实践
有空的时候补充,可以参考 http://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.html http://www.ruanyifeng.com/ ...
- linux下查看网卡信息的命令
rhel 内核版本号信息: [root@hvrhub ~]# uname -a Linux hvrhub 2.6.18-308.el5 #1 SMP Fri Jan 27 17:17:51 EST 2 ...
- mmall 项目实战(一)项目初始化
1.创建 数据库 及 表 数据脚本: /* Navicat Premium Data Transfer Source Server : 182.92.82.103 Source Server Type ...
- Android Studio——gradle同步出错:MALFORMED
Android Studio之前使用本地的gradle-2.10,而后创建新的工程总是报错,信息如下: Gradle sync failed: MALFORMED 而后在File->Projec ...