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的基础用法的更多相关文章

  1. PropertyGrid控件由浅入深(二):基础用法

    目录 PropertyGrid控件由浅入深(一):文章大纲 PropertyGrid控件由浅入深(二):基础用法 控件的外观构成 控件的外观构成如下图所示: PropertyGrid控件包含以下几个要 ...

  2. logstash安装与基础用法

    若是搭建elk,建议先安装好elasticsearch 来自官网,版本为2.3 wget -c https://download.elastic.co/logstash/logstash/packag ...

  3. elasticsearch安装与基础用法

    来自官网,版本为2.3 注意elasticsearch依赖jdk,2.3依赖jdk7 下载rpm包并安装 wget -c https://download.elastic.co/elasticsear ...

  4. BigDecimal最基础用法

    BigDecimal最基础用法 用字符串生成的BigDecimal是不会丢精度的. 简单除法. public class DemoBigDecimal { public static void mai ...

  5. Vue组件基础用法

    前面的话 组件(Component)是Vue.js最强大的功能之一.组件可以扩展HTML元素,封装可重用的代码.根据项目需求,抽象出一些组件,每个组件里包含了展现.功能和样式.每个页面,根据自己所需, ...

  6. Smarty基础用法

    一.Smarty基础用法: 1.基础用法如下 include './smarty/Smarty.class.php';//引入smarty类 $smarty = new Smarty();//实例化s ...

  7. 前端自动化测试神器-Katalon的基础用法

    前言 最近由于在工作中需要通过Web端的功能进行一次大批量的操作,数据量大概在5000左右,如果手动处理, 完成一条数据的操作用时在20秒左右的话,大概需要4-5个人/天的工作量(假设一天8小时的工作 ...

  8. Bootstrap fileinput:文件上传插件的基础用法

    官网地址:http://plugins.krajee.com/ 官网提供的样例:http://plugins.krajee.com/file-input/demo 基础用法一 导入核心CSS及JS文件 ...

  9. asyncio 基础用法

    asyncio 基础用法 python也是在python 3.4中引入了协程的概念.也通过这次整理更加深刻理解这个模块的使用 asyncio 是干什么的? asyncio是Python 3.4版本引入 ...

  10. oracle入坑日记<六>自增列创建和清除(含序列和触发器的基础用法)

    0   前言 用过 SQLserver 和 MySQL 的自增列(auto_increment),然而 Oracle 在建表设置列时却没有自增列. 查阅资料后发现 Oracle 的自增列需要手动编写. ...

随机推荐

  1. 【译】使用.NET将WebAssembly扩展到云(一)

    原文 | Richard Lander 翻译 | 郑子铭 WebAssembly(Wasm)是一种令人兴奋的新虚拟机和(汇编)指令格式. Wasm 诞生于浏览器,是 Blazor 项目的重要组成部分. ...

  2. NC14700 追债之旅

    题目链接 题目 题目描述 小明现在要追讨一笔债务,已知有n座城市,每个城市都有编号,城市与城市之间存在道路相连(每条道路都是双向的),经过任意一条道路需要支付费用.小明一开始位于编号为1的城市,欠债人 ...

  3. NC14352 旅行

    题目链接 题目 题目描述 小z放假了,准备到R城市旅行,其中这个城市有N个旅游景点.小z时间有限,只能在三个旅行景点进行游玩.小明租了辆车,司机很善良,说咱不计路程,只要你一次性缴费足够,我就带你走遍 ...

  4. NC23413 小A买彩票

    题目链接 题目 题目描述 小A最近开始沉迷买彩票,并且希望能够通过买彩票发家致富.已知购买一张彩票需要3元,而彩票中奖的金额分别为1,2,3,4元,并且比较独特的是这个彩票中奖的各种金额都是等可能的. ...

  5. 玩转C语言:深入理解输入输出函数的奥秘

    ​ 欢迎大家来到贝蒂大讲堂 养成好习惯,先赞后看哦~ 所属专栏:C语言学习 贝蒂的主页:Betty's blog 1. 单字符输出函数 在C语言中有一个函数putchar专门负责输出单个字符,其语法如 ...

  6. php+bootstrap+jquery+mysql实现购物车项目案例

    获取源码 一键三连后,评论区留下邮箱安排发送:) 介绍 使用php,bootstrap,jquery,mysql实现的简易购物车案例. 通过本案例,你将学习到以下知识点: php 操作 mysql 实 ...

  7. UtilMeta - 简洁高效的 Python 后端元框架

    最近开源了我开发多年的一个 Python 后端框架:UtilMeta 项目介绍 UtilMeta 是一个用于开发 API 服务的后端元框架,基于 Python 类型注解标准高效构建声明式接口与 ORM ...

  8. Qt开发技术:QCharts(二)QCharts折线图介绍、Demo以及代码详解

    若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...

  9. Oracle 插入数据报错 ORA-00918

    1. 报错内容 ErrorCode = 918, SQLState = 23000, Details = ORA-00918: column 'TO_DATE('2023-12-1809:13:45' ...

  10. 【LeetCode贪心#04】跳跃游戏I + II

    跳跃游戏 力扣题目链接(opens new window) 给定一个非负整数数组,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 判断你是否能够到达最后一个位置. 示 ...