以前在用ASP.NET 做B/S系统时,可以方便地在GRIDVIEW DATAList等数据控件中,使用自定义的代码逻辑,比如
使用 <%# GetBalance(custID) %> 这样的调用, GetBalance()为在codebehind类中定义的方法;
在WPF应用程序中有时也有类似的需求,比如数据库表Teacher中有一个字段 Title ,int 类型,取值为1-5,分别对应讲师 研究员 高工 副教授 教授 。在wpf窗口中需要直接显示 讲师 研究员 类似的文字,而不是一个1-5的数字,从界面设计的角度 ,用文字来表示职称是最自然的方式。因此在数据绑定的时候需要将整数转换为对应的文本职称。 但是WPF没有象ASP。NET那样的绑定表达式用法;该怎么办呢?
WPF框架提供了一个IValueConverter接口,负责数据源到数据控件绑定时,自定义转换逻辑。使用它包括以下步骤:
1.创建一个只转换器类,实现该接口;
2.给该类加入ValueConversion属性,并制定源类型和目标类型;
3.实现该接口的两个方法,Convert()与ConvertBack()
4.按照1-3创建类之后,在数据绑定控件中,设定Converter为该类的一个实例;
具体要完成上述功能:
1.首先创建实现 IValueConverter的类:
//指定转换器源类型和目标类型
[ValueConversion(typeof(int), typeof(string))]
public class TitleConverter:IValueConverter
{
//实现接口的两个方法
#region IValueConverter 成员
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
int titleInt = (int)value;
string titleStr = string.Empty;
switch (titleInt)
{
case 5:
titleStr = "教授";
break;
case 4:
titleStr = "副教授";
break;
case 3:
titleStr = "高工";
break;
case 2:
titleStr = "研究员";
break;
case 1:
titleStr = "讲师";
break;
}
return titleStr;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
string titleStr = value.ToString();
int titleInt = 0;
switch (titleStr)
{
case "教授":
titleInt = 5;
break;
case "副教授":
titleInt = 4;
break;
case "高工":
titleInt = 3;
break;
case "研究员":
titleInt = 2;
break;
case "讲师":
titleInt = 1;
break;
}
return titleInt;
}
#endregion
}
2.前台调用
首先需要在窗口中声明转换器类名称空间 并定义一个转换器资源
<Window x:Class="EvalStarServer.UserManage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:EvalStarServer.BLL"
Title="UserManage" >
<Window.Resources>
<local:TitleConverter x:Key="myTitleConverter"></local:TitleConverter>
</Window.Resources>
<DataGrid Name="gdEvaluator" CanUserAddRows="False">
<DataGrid.Columns>
<DataGridTextColumn Header="姓名" Binding="{Binding Path=Name}"></DataGridTextColumn>
<DataGridTextColumn Header="职称" Binding="{Binding Path=Elevel,Converter={StaticResource myTitleConverter}}"></DataGridTextColumn>
<DataGridTextColumn Header="编号" Binding="{Binding Path=Eno}"></DataGridTextColumn>
<DataGridTemplateColumn Header="操作">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Tag="{Binding Path=ID}" Click="OnDeleteEvl">删除</Button>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</Windows>
这样就实现了前台根据数据中的整数 显示不同的职称。
WPF 格式化输出- IValueConverter接口的使用 datagrid列中的值转换显示的更多相关文章
-
WPF 格式化输出- IValueConverter接口的使用
以前在用ASP.NET 做B/S系统时,可以方便地在GRIDVIEW DATAList等数据控件中,使用自定义的代码逻辑,比如 使用 <%# GetBalance(custID) %> 这 ...
-
腾讯微博API时间线相关接口返回的微博信息中head值使用问题
腾讯微博API时间线相关接口返回的微博信息中head值表示作者头像url,这个链接直接访问并不能使用,需要再附加一个参数指定图片的大小(100.50),比如:[head]/100.
-
语法注释格式;格式化输出;input在py2和py3中的区别;数据的基本类型;运算符;
一.Python中的注释 Python的注释是代码的评论,是让代码让人能更加清晰明确.代码的注释可分为单行注释和多行注释,单行注释用“#”,多行注释用三对单引号或者三对双引号来表示. ps:# 单行注 ...
-
easyui datagrid列中使用tooltip
要实现这样一个效果:数据加载到DATAGRID中,鼠标移至某一列时,会弹出tooltip提示框. 最初的实现方法: { field: 'Reply', title: '备注', width: 220, ...
-
DataGrid列中加入CheckBox 全选 点击Header全选 和 只操作选中部分 功能的实现
先写个效果 中午接着写 反正没人看 只是给自己记录
-
perl5 第十章 格式化输出
第十章 格式化输出 by flamephoenix 一.定义打印格式二.显示打印格式三.在打印格式中显示值 1.通用的打印格式 2.格式和局域变量 3.选择值域格式 4.输出值域字符四.输出到 ...
-
编写 WPF DataGrid 列模板,实现更好的用户体验
Julie Lerman 下载代码示例 最近我在为一个客户做一些 Windows Presentation Foundation (WPF) 方面的工作. 虽然我提倡使用第三方工具,但有时也会避免使用 ...
-
python基础之循环语句,格式化输出以及编码
1.while循环语句 1.1 常见的几种结构 1. while+判断条件 循环体 2. while+判断条件 循环体 else 语句 tips:while循环如果满足条件的话,会一直循环循环体 ...
-
Python基础之格式化输出的三种方式
目录 1. 格式化输出的三种方式 1.1 占位符 1.2 format格式化 1.3 f-string格式化 1. 格式化输出的三种方式 在程序中,需要将输出信息打印成固定的格式,这时候就需要格式化输 ...
随机推荐
-
CentOS 6.2 Eclipse CDT 开发环境搭建
一.安装中文语言支撑 我当初安装CentOS6.2时选择了中文语言支持,有iBus和拼音输入法,有gnome和kde 没有安装的可以参考:CentOS英文环境下使用中文输入法 安装中文语言支持和输入 ...
-
浅谈CPU和GPU的区别
导读: CPU和GPU之所以大不相同,是由于其设计目标的不同,它们分别针对了两种不同的应用场景.CPU需要很强的通用性来处理各种不同的数据类型,而GPU面对的则是类型高度统一的.相互无依赖的大规模数据 ...
-
【Win10开发】自定义标题栏
UWP 现在已经可以自定义标题栏了,毕竟看灰色时间长了也会厌烦,开发者们还是希望能够将自己的UI做的更加漂亮,更加与众不同.那么废话不多说,我们开始吧! 首先要了解ApplicationViewTit ...
-
css制作漂亮彩带导航条菜单
点击这里查看效果:http://keleyi.com/keleyi/phtml/divcss/17.htm 效果图: 以下是源代码: <!DOCTYPE html PUBLIC "-/ ...
-
JDK常用工具集&mdash;&mdash;jps
该命令的作用是罗列出目标系统(target system)中所有具有访问权限到的Java进程. 一.命令简介: jps [option] [hostid] 二.参数说明: option ...
-
[LintCode] Wiggle Sort 扭动排序
Given an unsorted array nums, reorder it in-place such that nums[0] <= nums[1] >= nums[2] < ...
-
[Xamarin] 調用JSON.net 來解析JSON (转帖)
上一篇文章我們提到了透過WebClient從Facebook 拿到我的JSON資料 再來我們要怎麼解析JSON格示呢?在.net 中,我們很孰悉的JSON.net,沒錯,我們依然可以在Xamarin中 ...
-
字符串分割函数 STRTOK &; STRTOK_R (转)
1.一个应用实例 网络上一个比较经典的例子是将字符串切分,存入结构体中.如,现有结构体 typedef struct person{ char name[25]; char sex[1 ...
-
[SSH服务]——一些安全性配置和补充实验
SSH 安全性和配置 转载于 http://www.ibm.com/developerworks/cn/aix/library/au-sshsecurity/ 对于一些之前列举的代码示例,许多系统管理 ...
-
LR之错误处理
1.脚本的健壮性 2.VuGen的处理机制 3.lr_continue_on_error函数 4.示例代码