IValueConverter的基础用法
1、我们在做工控项目的时候通常设置配方的上下限
这个时候要求OK数在上下限范围之内,否则NG
首先我们绑定一个简单的List用来展示数据,我这里用学生Age来展示
<ListView ItemsSource="{Binding DataList}" Margin="20">
<ListView.View>
<GridView>
<GridViewColumn Width="80" Header="Id" DisplayMemberBinding="{Binding Id}"/>
<GridViewColumn Width="100" Header="名称" DisplayMemberBinding="{Binding Name}"/>
<GridViewColumn Width="200" Header="年龄" DisplayMemberBinding="{Binding Age}"/>
</GridView>
</ListView.View>
</ListView>
2、我们需要年龄在18岁之下是绿色,否则是蓝色的背景
<Window.Resources>
<cvt:RangeToBooleanConverter x:Key="RangeToBooleanConverter"/>
</Window.Resources>
<Grid>
<ListView ItemsSource="{Binding DataList}" Margin="20">
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Style.Triggers>
<DataTrigger Binding="{Binding Age, Converter={StaticResource RangeToBooleanConverter}, ConverterParameter='18-100'}" Value="True">
<Setter Property="Background" Value="Green"/>
</DataTrigger>
<DataTrigger Binding="{Binding Age, Converter={StaticResource RangeToBooleanConverter}, ConverterParameter='0-17'}" Value="True">
<Setter Property="Background" Value="Blue"/>
</DataTrigger>
</Style.Triggers>
</Style>
</ListView.ItemContainerStyle>
<ListView.View>
<GridView>
<GridViewColumn Width="80" Header="Id" DisplayMemberBinding="{Binding Id}"/>
<GridViewColumn Width="100" Header="名称" DisplayMemberBinding="{Binding Name}"/>
<GridViewColumn Width="200" Header="年龄" DisplayMemberBinding="{Binding Age}"/>
</GridView>
</ListView.View>
</ListView>
</Grid>
3、接下来我们看自己定义的RangeToBooleanConverter
public class RangeToBooleanConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value != null && value is int intValue && parameter != null && parameter is string rangeString)
{
var range = rangeString.Split('-');
if (range.Length == 2 && int.TryParse(range[0], out int minValue) && int.TryParse(range[1], out int maxValue))
{
return intValue >= minValue && intValue <= maxValue;
}
}
return false;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
IValueConverter的基础用法的更多相关文章
- PropertyGrid控件由浅入深(二):基础用法
目录 PropertyGrid控件由浅入深(一):文章大纲 PropertyGrid控件由浅入深(二):基础用法 控件的外观构成 控件的外观构成如下图所示: PropertyGrid控件包含以下几个要 ...
- logstash安装与基础用法
若是搭建elk,建议先安装好elasticsearch 来自官网,版本为2.3 wget -c https://download.elastic.co/logstash/logstash/packag ...
- elasticsearch安装与基础用法
来自官网,版本为2.3 注意elasticsearch依赖jdk,2.3依赖jdk7 下载rpm包并安装 wget -c https://download.elastic.co/elasticsear ...
- BigDecimal最基础用法
BigDecimal最基础用法 用字符串生成的BigDecimal是不会丢精度的. 简单除法. public class DemoBigDecimal { public static void mai ...
- Vue组件基础用法
前面的话 组件(Component)是Vue.js最强大的功能之一.组件可以扩展HTML元素,封装可重用的代码.根据项目需求,抽象出一些组件,每个组件里包含了展现.功能和样式.每个页面,根据自己所需, ...
- Smarty基础用法
一.Smarty基础用法: 1.基础用法如下 include './smarty/Smarty.class.php';//引入smarty类 $smarty = new Smarty();//实例化s ...
- 前端自动化测试神器-Katalon的基础用法
前言 最近由于在工作中需要通过Web端的功能进行一次大批量的操作,数据量大概在5000左右,如果手动处理, 完成一条数据的操作用时在20秒左右的话,大概需要4-5个人/天的工作量(假设一天8小时的工作 ...
- Bootstrap fileinput:文件上传插件的基础用法
官网地址:http://plugins.krajee.com/ 官网提供的样例:http://plugins.krajee.com/file-input/demo 基础用法一 导入核心CSS及JS文件 ...
- asyncio 基础用法
asyncio 基础用法 python也是在python 3.4中引入了协程的概念.也通过这次整理更加深刻理解这个模块的使用 asyncio 是干什么的? asyncio是Python 3.4版本引入 ...
- oracle入坑日记<六>自增列创建和清除(含序列和触发器的基础用法)
0 前言 用过 SQLserver 和 MySQL 的自增列(auto_increment),然而 Oracle 在建表设置列时却没有自增列. 查阅资料后发现 Oracle 的自增列需要手动编写. ...
随机推荐
- Hive中insert into 和 insert overwrite的区别
相同点 insert into 和 insert overwrite 都是往表中插入数据的. 不同点 区别1: insert into :其实是将数据追加到表的末尾,注意:不是覆盖,是追加. inse ...
- JS Leetcode 81. 搜索旋转排序数组 II 题解,补救二分法的可行性
壹 ❀ 引 今日LeetCode题为153. 寻找旋转排序数组中的最小值,在10个月前,我已在JS leetcode 寻找旋转排序数组中的最小值 题解分析,你不得不了解的二分法一文中写了本题的题解,所 ...
- SATA 中ATA与AHCI的区别
SATA中ATA和AHCI有什么区别? 1.ACHI是针对SATA2设计的,可以卡其NCQ功能,表面上没有速度的优势,但是因为算法不同,可以有效的保护硬盘.ATA 是硬件模拟IDE的一种方法.表面 ...
- Java定时器(Timer)
1.介绍 Timer和TimerTask是用于在后台线程中调度任务的java util类.简单地说,TimerTask是要执行的任务,Timer是调度器. 2.调度一次性任务 2.1 指定延迟后执行 ...
- 修改mysql默认字符集和排序规则
1.查看当前数据库字符集和排序规则 命令如下: mysql> SHOW VARIABLES LIKE 'collation_%'; mysql> SHOW VARIABLES LIKE ' ...
- 我的小程序之旅六:微信公众号授权登录(适用于H5小程序)
实现步骤 1 第一步:用户同意授权,获取code 2 第二步:通过code换取网页授权access_token 3 第三步:刷新access_token(如果需要) 4 第四步:拉取用户信息(需sco ...
- Entity Framework发布到IIS报错
参考资料:https://www.cnblogs.com/mrma/p/5404584.html 报错信息 The Entity Framework provider type 'System.Dat ...
- 【Azure Webjob + Redis】WebJob一直链接Azure Redis一直报错 Timeout Exception
问题描述 运行在App Service上的Webjob连接Azure Redis出现Timeout Exception. 错误截图: 参考Azure Redis对于超时问题的排查建议, 在修改Min ...
- 【Azure API 管理】APIM不能连接到 App Service (APIM cannot connect to APP service)
问题描述 APIM 无法正确连接到App Service,返回500错误: { "statusCode": 500, "message": "Inte ...
- 【Azure 微服务】面对Service Fabric中节点状态不正常(Disabling/Warning/RemoveNode)的几种尝试解决方案
问题描述 发现 Service Fabric 的节点状态异常,如出现 Disabling, Warning,或者 RemoveNode的情况,并且持续很长时间都没有变化(2小时以上).如何来缓解这种问 ...