首页 > 解决方案 > WPF中数据网格列的条件格式

问题描述

我在代码中为数据网格文本列定义了以下样式:

<DataGridTextColumn.CellStyle>
   <Style TargetType="DataGridCell" BasedOn="{StaticResource DataGrid_CellStyle_Right}">
       <Style.Triggers>
           <DataTrigger Binding="{Binding Path=OrderByColumn, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}}" Value="2">
               <Setter Property="FontSize" Value="{StaticResource LargeFontSize}"/>
               <Setter Property="Background" Value="Red" />
          </DataTrigger>
      </Style.Triggers>
  </Style>
</DataGridTextColumn.CellStyle>

为每一列设置了类似的样式,只有 DataTrigger 的值发生变化(第二列为 2,第三列为 3,第四列为 4,依此类推)。

这个想法是我在使用控件时在 XAML 中设置 OrderByColumn 属性,以便我可以有选择地格式化给定的列(属性本身存在于 UserControl 后面的代码中)。列的字体大小受到尊重(资源 LargeFontSize 被发现和使用)但不是背景颜色,无论我做什么,它似乎都保持不变。全部基于的样式此时没有要覆盖的颜色。

我在这里做错了什么?

标签: c#wpfxaml

解决方案


事实证明,我完全忘记的 ControlTemplate 阻止了其他样式按预期呈现。删除它允许显示列颜色。它在此过程中添加了其他格式问题,但至少可以修复这些问题。

无论如何,感谢您的评论和帮助,但似乎这个问题已得到解决。


推荐阅读