wpf中利用多重绑定实现表中数据越界自动报警
2012-01-10 22:26
531 查看
做工控项目的朋友经常遇到这样的问题.
通过设备采集回来的数据,显示在UI中,当某些数据不再规定的范围内时,程序需要能都自动的以某种方式报警.
这里提供一个示例,当datagrid中的值大于报警上限的时候,讲值所在的单元格背景变成红色.如下图
![](http://pic002.cnblogs.com/images/2012/337335/2012011022091855.jpg)
方法很简单,在datagrid的xaml代码如下:
注意在windows中加入资源
IsAlarmConverter类代码如下:
注意
工程下载地址
文件名:TestDataGrid.rar,访问地址:http://www.kuaipan.cn/index.php?ac=file&oid=25704335589508897
一些好东西顺便分享下
Microsoft.Expression.Blend.4.基础视频教程 http://www.kuaipan.cn/index.php?ac=file&oid=25704335589507145
通过设备采集回来的数据,显示在UI中,当某些数据不再规定的范围内时,程序需要能都自动的以某种方式报警.
这里提供一个示例,当datagrid中的值大于报警上限的时候,讲值所在的单元格背景变成红色.如下图
![](http://pic002.cnblogs.com/images/2012/337335/2012011022091855.jpg)
方法很简单,在datagrid的xaml代码如下:
<DataGrid Name="dataGrid" ItemsSource="{Binding}" AlternatingRowBackground="LightBlue" AlternationCount="2" AutoGenerateColumns="False" CanUserAddRows="False" Margin="0,0,0,43"> <DataGrid.Columns> <DataGridTextColumn Header="ID" Binding="{Binding ID}"/> <DataGridTextColumn Header="名称" Binding="{Binding 名称}"/> <DataGridTextColumn Header="报警上限" Binding="{Binding 报警上限}"/> <DataGridTemplateColumn Header="值"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <TextBlock Text="{Binding 值}" Foreground="Black"> <TextBlock.Background> <MultiBinding Converter="{StaticResource IsAlarmConverter}"> <Binding Path="值" /> <Binding Path="报警上限"/> </MultiBinding> </TextBlock.Background> </TextBlock> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> <DataGridTextColumn Header="采集时间" Binding="{Binding 采集时间}"/> </DataGrid.Columns> </DataGrid>
注意在windows中加入资源
<Window.Resources> <local:IsAlarmConverter x:Key="IsAlarmConverter"/> </Window.Resources>
IsAlarmConverter类代码如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Data; using System.Globalization; using System.Windows.Media; namespace UsefullClass { public class IsAlarmConverter : IMultiValueConverter { public object Convert(object[] value, Type typeTarge, object param, CultureInfo culture) { try { double value1 = double.Parse(value[0].ToString()); double value2 = double.Parse(value[1].ToString()); if (value1 > value2) { return Brushes.Red; } else return null; } catch { return null; } } public object[] ConvertBack(object value, Type[] typeTarge, object param, CultureInfo culture) { return null; } } }
注意
public object Convert(object[] value, Type typeTarge, object param, CultureInfo culture)
中
object[] value数组中参数的次序 和
<MultiBinding Converter="{StaticResource IsAlarmConverter}"> <Binding Path="值" /> <Binding Path="报警上限"/> </MultiBinding>
中的顺序是一样的.即 value[0]对应当前行"值"这列单元格的值,value[1]对应改行"报警上限"的值.
工程下载地址
文件名:TestDataGrid.rar,访问地址:http://www.kuaipan.cn/index.php?ac=file&oid=25704335589508897
一些好东西顺便分享下
Microsoft.Expression.Blend.4.基础视频教程 http://www.kuaipan.cn/index.php?ac=file&oid=25704335589507145
相关文章推荐
- 利用反射实现ASP.NET控件和数据实体之间的双向绑定,并且在客户端自动验证输入的内容是否合法
- WPF and Silverlight 学习笔记(二十二):使用代码实现绑定、绑定数据的验证
- 利用定时器实现双向数据绑定效果
- WPF and Silverlight 学习笔记(二十二):使用代码实现绑定、绑定数据的验证
- WPF 实现跑马灯效果的Label控件,数据绑定方式实现
- 利用ORACLE存储过程与JOB结合实现对数据表自动备份
- ASP.NET MVC中 Jquery AJAX 获取数据利用MVC模型绑定实现输出
- ORM框架实现数据的自动绑定添加修改
- WPF默认数据绑定可以自动进行数据格式验证
- 利用ORACLE存储过程与JOB结合实现对数据表自动备份(用循环实现)
- WPF 之 实现TextBox输入文字后自动弹出数据(类似百度的输入框)
- WPF and Silverlight 学习笔记(二十五):使用CollectionView实现对绑定数据的排序、筛选、分组
- WPF DataGrid 绑定DataSet数据 自动生成行号
- 利用反射将数据库中的数据两表自动对接实现数据传输
- 利用defineProperty实现数据的双向绑定
- WPF数据绑定机制是如何实现
- WPF实现TextBox输入文字后自动弹出数据(类似百度的输入框)
- WPF and Silverlight 学习笔记(二十二):使用代码实现绑定、绑定数据的验证
- 利用object.defineProperty实现数据与视图绑定
- 利用XML数据绑定实现页面无刷新的数据浏览