现在位置首页 / 项目实战 /正文

wpf教程--IValueConverter实现DataGrid数据转换

作者: IT小兵 | 2014年7月25日| 热度:℃ | 评论: |参与:

背景:

数据库存的是0,1,2,3之类的。界面显示时如何变成具体的值了 如:经销,营销之类的。要是显示0,1,2,3之类客户是看不懂的。有办法在datagrid里将数字转换为对应的值吗?


方法:

1 在后台建立枚举转换类,实现IValueConverter。

 public class OpertaionDataConverter : IValueConverter
    {
        enum EnumValues { 新增 = 1, 变更 = 2, 删除 = 3 }
   
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return (EnumValues)value;
        }
        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }
    public class CenterDataConverter :  
    {
         
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            if (value==null || value.ToString().Length == 0)
            {
                return "中心";
            }
            else { return value; }
            
        }
        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }
    public class StatusDataConverter : IValueConverter
    {
        enum EnumValues { 未开始同步=0,已同步 = 1, 同步失败 = 2, 忽略同步 = 3,同步中=4 }
    
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return (EnumValues)value;
        }
        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }

2 在xaml文件引用:

<Window
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:controls="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" 
    x:Class="Kaitone.DetectiveHelper.UI.WindowPages.AyncLink.AyncLinkList"
     xmlns:aync="clr-namespace:Kaitone.DetectiveHelper.UI.Controls"
   
      xmlns:local="clr-namespace:Kaitone.DetectiveHelper.UI.WindowPages.AyncLink"
        Title="助手" Height="600" Width="1000" WindowStyle="None" WindowStartupLocation="CenterScreen" AllowsTransparency="True" Background="{x:Null}">
    <Window.Resources>
        <local:OpertaionDataConverter x:Key="OpertaionDataConverter" />
        <local:StatusDataConverter x:Key="StatusDataConverter" />
        <local:CenterDataConverter x:Key="CenterDataConverter" /> 
    </Window.Resources>

注意事项:

一定要设置资源,不然无法找到:

    <Window.Resources>
        <local:OpertaionDataConverter x:Key="OpertaionDataConverter" />
        <local:StatusDataConverter x:Key="StatusDataConverter" />
        <local:CenterDataConverter x:Key="CenterDataConverter" /> 
    </Window.Resources>

3 在datagrid中指定转换器:

  <DataGridTextColumn Header="操作类型" Width="120" Binding="{Binding OperationType,Converter={StaticResource OpertaionDataConverter}}"/>
                                                <DataGridTextColumn Header="同步对象" Width="100" Binding="{Binding UserName,Converter={StaticResource CenterDataConverter}}"/>
                                                <DataGridTextColumn Header="同步状态" Width="100" Binding="{Binding Status,Converter={StaticResource StatusDataConverter}}"/>

Binding="{Binding Status,Converter={StaticResource StatusDataConverter}}。

点击阅读本文所属分类的更多文章: 项目实战 。和高手一起交流:346717337
友荐云推荐

未注明转发、原文均为本站原创。分享本文请注明 原文链接

给您更多信息和帮助

在这里您可以找到更多:

技术交流群:346717337 Jquery插件交流

投稿:suchso@vip.qq.com

承接:企业网站门户/微网站/微商城/CMS系统/微信公众号运营/业务咨询

抢天猫双11红包
推荐使用阿里云服务器
echarts教程系列
本月最热文章

微信扫一扫,徜徉悠嘻网,您的休闲乐园

微信公众号:快乐每一天

随机文章
标签

技术交流群:346717337

投稿:suchso@vip.qq.com

专业专注:企业网站门户/微网站/微商城/CMS系统/微信公众号运营/付费问题咨询