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