最近在使用WPF的时候,遇到某个列的值需要根据内容不同进行转换显示的需求。搜索整理了一下,分以下两种方式实现:
1、转换器方法(Converter),绑定后,触发转换器,转换器负责把值转换成需要的内容。
2、DataTrigger方法,直接在xaml里面对数据进行处理,展示所需要的内容。
这里对这两种方法做下简单的总结,方便自己以后查看,也方便有需要的人。
第一种:
1、定义转换器
1 [ValueConversion(typeof(int), typeof(string))] 2 public class DataConverter : IValueConverter 3 { 4 public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 5 { 6 int c = System.Convert.ToInt32(parameter); 7 8 if (value == null) 9 throw new ArgumentNullException("value can not be null"); 10 11 int index = System.Convert.ToInt32(value); 12 if (index == 1) 13 return "Blue"; 14 else if (index == 2) 15 return "Red"; 16 else 17 return "Green"; 18 } 19 20 public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 21 { 22 return null; 23 } 24 }
2、使用转换器
(1)引用命名空间

xmlns:local="clr-namespace:触发器测试"
(2)定义资源

1 <Window.Resources> 2 <local:DataConverter x:Key="foreColor"></local:DataConverter> 3 </Window.Resources>
(3)绑定属性,添加转换器

1 <Grid> 2 <DataGrid x:Name="dataGrid1" AutoGenerateColumns="False"> 3 <DataGrid.Columns> 4 <DataGridTextColumn Binding="{Binding ID}" Header="序号" Width="*"/> 5 <DataGridTextColumn Binding="{Binding Name,Converter={StaticResource foreColor}}" Header="名称" Width="*"/> 6 </DataGrid.Columns> 7 </DataGrid> 8 </Grid>
第二种:
1 <DataGrid x:Name="dataGrid1" AutoGenerateColumns="False"> 2 <DataGrid.Columns> 3 <DataGridTextColumn Binding="{Binding ID}" Header="序号" Width="*"/> 4 <DataGridTemplateColumn Header="名称" Width="*" > 5 <DataGridTemplateColumn.CellTemplate> 6 <DataTemplate> 7 <TextBlock> 8 <TextBlock.Style> 9 <Style TargetType="TextBlock" > 10 <Style.Triggers> 11 <DataTrigger Binding="{Binding Path= Name}" Value="1"> 12 <Setter Property="Text" Value="否"></Setter> 13 </DataTrigger> 14 <DataTrigger Binding="{Binding Path= Name}" Value="2"> 15 <Setter Property="Text" Value="是"></Setter> 16 </DataTrigger> 17 </Style.Triggers> 18 </Style> 19 </TextBlock.Style> 20 </TextBlock> 21 </DataTemplate> 22 </DataGridTemplateColumn.CellTemplate> 23 </DataGridTemplateColumn> 24 </DataGrid.Columns> 25 </DataGrid>

<对象.Style> <Style TargetType="对象"> <Style.Triggers> <DataTrigger Binding="{绑定}" Value="值"> //写你想要的效果 </DataTrigger> </Style.Triggers> </Style> </对象.Style>
初识WPF,简单记录,虚心求教