WPF 格式化输出- IValueConverter接口的使用 datagrid列中的值转换显示

2021-03-19 05:25

阅读:593

标签:ebe   als   文字   字段   res   显示   title   怎么办   ali   

以前在用ASP.NET 做B/S系统时,可以方便地在GRIDVIEW DATAList等数据控件中,使用自定义的代码逻辑,比如

使用 这样的调用, 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.前台调用

首先需要在窗口中声明转换器类名称空间 并定义一个转换器资源

        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" >
    
        
    


                
                                     
                    
                    
                    
                        
                            
                                
                            

                        

                    

                

            

 

 

这样就实现了前台根据数据中的整数 显示不同的职称。

WPF 格式化输出- IValueConverter接口的使用 datagrid列中的值转换显示

标签:ebe   als   文字   字段   res   显示   title   怎么办   ali   

原文地址:https://www.cnblogs.com/hanzq/p/12335109.html


评论


亲,登录后才可以留言!