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 的自增列需要手动编写. ...
随机推荐
- .NET周刊【2月第1期 2024-02-04】
祝大家新年快乐,龙年大吉~ 国内文章 C#/.NET/.NET Core优秀项目和框架2024年1月简报 https://www.cnblogs.com/Can-daydayup/p/18000401 ...
- NC16417 [NOIP2017]奶酪
题目链接 题目 题目描述 现有一块大奶酪,它的高度为 h,它的长度和宽度我们可以认为是无限大的,奶酪中间有许多半径相同的球形空洞.我们可以在这块奶酪中建立空间坐标系, 在坐标系中,奶酪的下表面为 z ...
- MySQL基础之DCL语句
DCL(Data Control Language)语句:数据控制语句. 用途:控制数据库.表.字段.用户的访问权限和安全级别. 常用关键字:grant.revoke等 一般用于管理数据库和用户的权限 ...
- sensitive-word v0.13 特性版本发布 支持英文单词全词匹配
拓展阅读 sensitive-word-admin v1.3.0 发布 如何支持分布式部署? sensitive-word-admin 敏感词控台 v1.2.0 版本开源 sensitive-word ...
- SVG与foreignObject元素
SVG与foreignObject元素 可缩放矢量图形Scalable Vector Graphics - SVG基于XML标记语言,用于描述二维的矢量图形.作为一个基于文本的开放网络标准,SVG能够 ...
- Swoole从入门到入土(2)——TCP服务器[初步接触]
我们知道Swoole弥补了PHP没办法实现长连接的短板,在接下来的话题中,我们会从TCP服务器.HTTP服务器.WebSocket服务器.协程.管道.中间件等话题,一个个进行讨论. 1.开篇 我们以S ...
- spring boot实现邮箱验证码注册
最近在设计自己的博客系统,涉及到用户注册与登录验证. 注册这地方我先采用最传统的邮箱验证码方式.具体的实现方式如下: 1.有关如何配置spring boot发送邮件,请参考我的另一篇文章: https ...
- 我的小程序之旅六:微信公众号授权登录(适用于H5小程序)
实现步骤 1 第一步:用户同意授权,获取code 2 第二步:通过code换取网页授权access_token 3 第三步:刷新access_token(如果需要) 4 第四步:拉取用户信息(需sco ...
- win32 - wsprintfW的使用
文档:将格式化的数据写入指定的缓冲区.根据格式字符串中相应的格式说明,将转换任何参数并将其复制到输出缓冲区.该函数在其写入的字符后附加一个终止空字符,但返回值的字符计数中不包含终止空字符. 例子: # ...
- Redis灵魂11问
目录 说说redis都有哪些数据类型吧 Redis为什么快呢? 那为什么Redis6.0之后又改用多线程呢? 知道什么是热key吗?热key问题怎么解决? 什么是缓存击穿.缓存穿透.缓存雪崩? 缓存击 ...