【问题标题】:How to change foreground of WPF DataGridCell depending on background?如何根据背景更改 WPF DataGridCell 的前景?
【发布时间】:2015-04-05 15:38:21
【问题描述】:

当背景不是白色时,我想更改 DataGrid 中 DataGridCell 的前景颜色。所以我写了这个 xaml:

<Style TargetType="{x:Type DataGridCell}">
    <Setter Property="Foreground"
            Value="White" />
    <Style.Triggers>
        <DataTrigger Binding="{Binding Background, RelativeSource={RelativeSource Self}}"
                     Value="Transparent">
            <Setter Property="Foreground"
                    Value="Black" />
         </DataTrigger>
     </Style.Triggers>
</Style>

使用转换器测试输入和绑定,我可以看到绑定生成的正确值。但是,setter 似乎没有触发。

edit1:我正在通过转换器设置单元格背景颜色

edit2:实际上,datagridcell的文本块的背景是通过转换器设置的

【问题讨论】:

  • 如何设置单元格背景颜色?
  • 更新问题和答案
  • 你的Transparents 一样吗?即rgba(0,0,0,0)rgba(255,255,255,0)都是透明的
  • 此链接:social.msdn.microsoft.com/Forums/en-US/… 建议 {Binding RelativeSource={RelativeSource Mode=Self},Path=Background.Color}
  • 我只是将触发器切换到转换器而不是数据触发器,这样我就可以通过调试器获得更多可见性。由于 Ganesh 的问题,现在我明白了哪里出了问题。

标签: wpf xaml datagrid


【解决方案1】:

我通过转换器在 DataGridCell 中设置 TextBlock 的背景。所以 DataGridCell 的背景实际上并没有改变,这是我绑定的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-16
    • 1970-01-01
    • 2011-11-25
    • 1970-01-01
    • 2013-09-03
    • 2021-12-16
    • 1970-01-01
    相关资源
    最近更新 更多