wpf之IValueConverter接口

   wpf使用绑定数据源和每一列的值。这个方法虽然很方便,但有一个弊端。数据库中是什么数据,界面上显示的就是什么。如图,这样显示就非常不友好。


   由此,想到了要转换。正好,wpf为我们提供了一个IValueConverter 接口和一个Binding.Converter 属性

后台代码:

 //实现数据转化
    public class DataConverter:IValueConverter
    {
        //实现接口的两个方法
        #region IValueConverter 成员

        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            string TypeInt = value.ToString();
            string TypeStr = string.Empty;
            switch (TypeInt)
            {
                case "0":
                    TypeStr = "单个学校(单位)";
                    break;
                case "1":
                    TypeStr = "教育行政部门";
                    break;
            }

            return TypeStr;
        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            string TypeStr = value.ToString();
            int TypeInt = 0;
            switch (TypeStr)
            {
                case "单个学校(单位)":
                    TypeInt = 0;
                    break;
                case "教育行政部门":
                    TypeInt = 1;
                    break;
            }

            return TypeInt;
        }

        #endregion
    }

界面代码:
<mdi:MdiChild xmlns:my="clr-namespace:Founder.CustomControl;assembly=Founder.CustomControl"  x:Class="Founder.Module2015.ztgl.Ztgl_2015"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:Founder.Module2015.ztgl"    <!--此处引用转换类的命名空间-->
             xmlns:mdi="clr-namespace:WPF.MDI;assembly=WPF.MDI"
             xmlns:cmd="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.Extras.WPF4"
             xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
              xmlns:ctrls="clr_namespace:Founder.Controls"
             mc:Ignorable="d" 
             d:DesignHeight="300" d:DesignWidth="300" Height="500" Width="800">
    <mdi:MdiChild.Resources>
        <local:DataConverter x:Key="myTitleConverter"></local:DataConverter>
    </mdi:MdiChild.Resources>

 <DataGrid Grid.Row="1" x:Name="dgData"
                  AutoGenerateColumns="False"
                  CanUserAddRows="False"
                  EnableColumnVirtualization="True"
                  GridLinesVisibility="Horizontal"
                  ItemsSource="{Binding ZhangTaoSource,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}"
                  SelectedItem="{Binding SelectedZhangTao, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
                              SelectionMode="Single" SelectionUnit="FullRow">
                <i:Interaction.Triggers>
                    <i:EventTrigger EventName="MouseDoubleClick">
                        <cmd:EventToCommand Command="{Binding ZTDoubleClick}" PassEventArgsToCommand="True"/>
                    </i:EventTrigger>
                </i:Interaction.Triggers>
                <DataGrid.Columns>
                    <DataGridTextColumn Binding="{Binding Name}" Width="*" Header="账套名称" IsReadOnly="True" />
                    <DataGridTextColumn Binding="{Binding Path=Type,Converter={StaticResource myTitleConverter}}" Width="*" Header="用户类型" IsReadOnly="True" />
                    <DataGridTextColumn Binding="{Binding DQDM}" Width="*" Header="地区代码" IsReadOnly="True" />
                    <DataGridTextColumn Binding="{Binding DQMC}" Width="*" Header="地区名称" IsReadOnly="True" />
                </DataGrid.Columns>
            </DataGrid>

</mdi:MdiChild>

结果:













  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值