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>
结果: