WPF后台C#代码为DataGrid行添加FontAwesome图标
实现方案
要在Status列的"Success"文本旁显示FontAwesome成功图标,你需要将原有的DataGridTextColumn替换为DataGridTemplateColumn(支持自定义单元格内的多元素布局),再通过数据触发器控制图标的显示状态。具体步骤如下:
1. 修正原XAML中的笔误
你提供的代码里,Status列的Binding错误指向了Date属性,先把它修正为绑定Status:
<!-- 原错误代码 --> Binding="{Binding Path=Date}" <!-- 修正后 --> Binding="{Binding Path=Status}"
2. 替换为DataGridTemplateColumn并自定义单元格布局
将整个Status列的定义替换为以下代码,保留你原有的表头样式,同时添加图标+文本的单元格模板:
<DataGridTemplateColumn Width="Auto" Header="Status" MinWidth="250"> <!-- 保留你原有的表头模板 --> <DataGridTemplateColumn.HeaderTemplate> <DataTemplate> <StackPanel> <fa:ImageAwesome Icon="Sort" Height="10" Name="Search" Margin="10,15,25,0" HorizontalAlignment="Center" /> <TextBlock Text="Status" Margin="0,-30,0,0" /> </StackPanel> </DataTemplate> </DataGridTemplateColumn.HeaderTemplate> <!-- 保留你原有的表头样式 --> <DataGridTemplateColumn.HeaderStyle> <Style TargetType="{x:Type DataGridColumnHeader}"> <Setter Property="HorizontalContentAlignment" Value="Center" /> <Setter Property="Background" Value="#dec15a" /> <Setter Property="Height" Value="50" /> <Setter Property="FontWeight" Value="Bold" /> <Style.Triggers> <Trigger Property="IsMouseOver" Value="True"> <Setter Property="Background" Value="#d5b024" /> </Trigger> </Style.Triggers> </Style> </DataGridTemplateColumn.HeaderStyle> <!-- 自定义单元格内容:文本+图标 --> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Margin="0,8,0,0"> <!-- 显示Status文本 --> <TextBlock Text="{Binding Status}" FontFamily="Arial" Foreground="Gray" FontWeight="Normal" /> <!-- FontAwesome成功图标,默认隐藏 --> <fa:ImageAwesome x:Name="SuccessIcon" Icon="Check" Height="16" Foreground="Green" Margin="5,0,0,0" Visibility="Collapsed" /> </StackPanel> <!-- 数据触发器:当Status为Success时显示图标 --> <DataTemplate.Triggers> <DataTrigger Binding="{Binding Status}" Value="Success"> <Setter TargetName="SuccessIcon" Property="Visibility" Value="Visible" /> </DataTrigger> </DataTemplate.Triggers> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn>
3. 后台代码无需修改
你原来添加行的代码可以直接使用,不需要做任何调整:
dgrd_ListFiles.Items.Add(new Item() { Date = System.DateTime.Now.ToString("MM/dd/yyyy"), File = ".pdf", Status = "Success" });
效果说明
- 当Status值为"Success"时,单元格会显示
Success文本+绿色的FontAwesome勾选图标; - 其他Status值只会显示文本,图标保持隐藏;
- 表头样式和你原来的设置完全一致,不影响原有布局。
内容的提问来源于stack exchange,提问作者Vybhavi R
相关产品推荐
相关产品推荐

