前台代码:创建新列并绑定内容
<Window x:Class="MethodConfiguration.ShowTable"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:MethodConfiguration;assembly="
Title="ShowTable" Height="372" Width="892" Loaded="Window_Loaded">
<Window.Resources>
<local:MyConverter x:Key="myConverter"/>
</Window.Resources>
<Grid x:Name="gridMain">
<DataGrid Grid.Row="1" RowHeaderWidth="50" Width="1100" CanUserSortColumns="False" x:Name="dataGrid1" MouseDoubleClick="dataGrid1_MouseDoubleClick" SelectionChanged="dataGrid1_SelectionChanged" AutoGenerateColumns="False" CanUserAddRows="False" IsReadOnly="True" Grid.RowSpan="2" Grid.ColumnSpan="5">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding hmd ,Converter={StaticResource myConverter}}" Header="黑名单" Width="70"/>
<DataGridTextColumn Binding="{Binding CreateUserName}" Header="添加人" Width="100"/>
<DataGridTextColumn Binding="{Binding CreateTime,StringFormat='yyyy-MM-dd HH:mm:ss'}" Header="添加时间" Width="180"/>
</DataGrid.Columns>
</DataGrid>
</Grid>
</Window>
首先引入转换器类的命名空间,由于我们实在项目的命名空间下wpfbase定义的类,不需要再引入命名空间。在页面的资源中添加转换器资源,<local:MyConverter x:Key="myConverter"/>,MyConverter是后台文件中定义的类名,myConverter是现在定义的转换器资源名称,在后面使用,这里注意,添加这行代码时编译器可能会提醒"命名空间中找不到此名称",不用在意这个,继续往下做。在黑名单那一列的绑定数据中,Binding="{Binding hmd ,Converter={StaticResource myConverter}}"使用转换器资源实现数据内容的转换。效果如下:
后台代码:
public class MyConverter : IValueConverter
{
/// <summary>
/// 源到目标
/// </summary>
/// <param name="value"></param>
/// <param name="targetType"></param>
/// <param name="parameter"></param>
/// <param name="culture"></param>
/// <returns></returns>
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
bool boolValue = false;
if (value != null)
boolValue = (bool)value;
return boolValue ? "是" : "否";
}
/// <summary>
/// 目标到源
/// </summary>
/// <param name="value"></param>
/// <param name="targetType"></param>
/// <param name="parameter"></param>
/// <param name="culture"></param>
/// <returns></returns>
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
在后台我们创建了一个继承至IValueConverter的MyConverter类,在这个类中我们必须覆盖两个接口函数,Convert和ConvertBack。Convert函数实现了从数据源到呈现目标的数据转换,其中true对应的是"是",false对应的是"否";ConvertBack函数实现了从呈现目标到数据源的转换,"是"对应的是true,"否"对应的是false。