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

WPF如何将DataGrid单元格FontWeight绑定到对应DataTable单元格内属性

问题原因

你遇到的问题来自两个核心错误:

  1. 绑定路径完全错误:DataGrid绑定DataView时,每行的DataContext是DataRowView类型,而非你自定义的CellItem类。你写的{Binding CellItem.bold}根本找不到对应属性,要取指定列的CellItem对象,需要用DataRowView的列索引语法:[列名].属性名。
  2. 全局CellStyle作用范围错误:你把触发器写在全局单元格样式里,会作用到所有列,第二列是普通字符串类型,不存在bold属性,绑定会直接失效。
解决方案

推荐手动指定DataGrid列,针对存储CellItem的列单独设置样式即可,修改后的XAML代码如下:

<DataGrid ItemsSource="{Binding grid_items}" GridLinesVisibility="All" 
          CanUserAddRows="False" HorizontalAlignment="Left" Height="200"
          Margin="0" VerticalAlignment="Top" Width="400"
          AutoGenerateColumns="False">
    <DataGrid.Columns>
        <!-- 存储CellItem的第一列 -->
        <DataGridTextColumn Header="column 0" Binding="{Binding [column 0]}">
            <DataGridTextColumn.CellStyle>
                <Style TargetType="DataGridCell">
                    <Setter Property="TextBlock.TextAlignment" Value="Center" />
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding [column 0].bold}" Value="True">
                            <Setter Property="FontWeight" Value="Bold" />
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </DataGridTextColumn.CellStyle>
        </DataGridTextColumn>
        <!-- 普通字符串类型的第二列 -->
        <DataGridTextColumn Header="column 1" Binding="{Binding [column 1]}">
            <DataGridTextColumn.CellStyle>
                <Setter Property="TextBlock.TextAlignment" Value="Center" />
            </DataGridTextColumn.CellStyle>
        </DataGridTextColumn>
    </DataGrid.Columns>
</DataGrid>

如果你的列是动态生成的,可以处理DataGrid.AutoGeneratingColumn事件,在事件判断列数据类型为CellItem时,动态给列加上对应的样式触发器即可。

补充说明:如果运行过程中需要动态修改bold属性后界面自动更新,需要让CellItem类实现INotifyPropertyChanged接口,否则只有初始化的值会生效。

内容的提问来源于stack exchange,提问作者user9893356

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 21:57:03