You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 21:24:50