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

WPF:如何基于ExtraEvent.IsWorkingDay为PivotGridControl单元格设置数据触发器

DevExpress PivotGridControl 单元格着色数据触发器设置

问题背景

现有如下PivotGridControl字段配置:

<dxpg:PivotGridControl.Fields>
    <dxpg:PivotGridField FieldName="CourierFullName" 
                         Area="RowArea"
                         Caption="Courier"/>
    <dxpg:PivotGridField FieldName="Header" 
                         Area="ColumnArea"
                         Caption="Data" 
                         ValueFormat="yyyy-MM-dd" SortOrder="Descending"/>
    <dxpg:PivotGridField Area="DataArea" 
                         SummaryType="Min"
                         CellTemplate="{StaticResource CellTemplate}"/>
</dxpg:PivotGridControl.Fields>

数据由以下类提供:

public class CourierFlattenRow
{
    public DateTime Header { get; set; }
    public string CourierFullName { get; set; }
    public TariffZone TariffZone { get; set; }
    public DeliveryTerm DeliveryTerm { get; set; } 
    public CourierExtraEvent ExtraEvent { get; set; }
}

// 需确保CourierExtraEvent包含IsWorkingDay属性
public class CourierExtraEvent
{
    public bool IsWorkingDay { get; set; }
    // 其他属性...
}

需求:设置数据触发器,当ExtraEvent.IsWorkingDay == true时,为数据区域的单元格着色。

解决方案

由于数据字段使用了自定义CellTemplate,直接在模板内为单元格容器添加带数据触发器的样式即可,核心是通过PivotCellData的RowData.Row属性绑定到CourierFlattenRow实体,进而判断目标属性值:

修改CellTemplate定义

<DataTemplate x:Key="CellTemplate">
    <Border x:Name="cellContainer" Padding="4" Background="Transparent">
        <TextBlock Text="{Binding Value}"/>
    </Border>
    <DataTemplate.Triggers>
        <!-- 当IsWorkingDay为true时设置单元格样式 -->
        <DataTrigger Binding="{Binding RowData.Row.ExtraEvent.IsWorkingDay}" Value="True">
            <Setter TargetName="cellContainer" Property="Background" Value="#E8F5E9"/>
            <Setter TargetName="cellContainer" Property="Foreground" Value="#2E7D32"/>
        </DataTrigger>
        <!-- 可选:处理ExtraEvent为null的情况 -->
        <DataTrigger Binding="{Binding RowData.Row.ExtraEvent, TargetNullValue=False}" Value="False">
            <Setter TargetName="cellContainer" Property="Background" Value="Transparent"/>
        </DataTrigger>
    </DataTemplate.Triggers>
</DataTemplate>

关键说明

  • PivotGrid单元格的数据上下文是PivotCellData类型,RowData.Row直接对应数据源中的CourierFlattenRow实例
  • 如果ExtraEvent可能为null,必须添加空值判断的触发器,避免绑定失效
  • 可根据需求替换背景色、前景色的具体值,调整样式细节

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 06:32:39