WPF的DataGrid绑定数据转换


最近在使用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:触发器测试"
View Code

(2)定义资源

1 <Window.Resources>
2         <local:DataConverter x:Key="foreColor"></local:DataConverter>
3     </Window.Resources>
View Code

(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>
View Code

 

第二种:

 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,简单记录,虚心求教


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM