make datagrid选中的行文本颜色是否透明?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了make datagrid选中的行文本颜色是否透明?相关的知识,希望对你有一定的参考价值。

我们的数据网格应用程序中的每一行都可以有各种背景和前景(文本)颜色。

根据字典使用以下内容(类似于BackColorFlag),根据OnLoadingRow事件中名为ForeColorFlag或BackColorFlag的绑定对象上的属性添加颜色:

foreach (var kvp in _foreColorFlags)
{
    var trigger = new DataTrigger {Binding = new Binding("ForeColorFlag"), Value = kvp.Key};
    var setter = new Setter(ForegroundProperty, kvp.Value);
    trigger.Setters.Add(setter);
    rowStyle.Triggers.Add(trigger);
}

因此,有必要使用以下内容隐藏选择的行:

// Remove selection style from DGV (make transparent instead of blue)
rowStyle.Resources[SystemColors.HighlightBrushKey] = Brushes.Transparent;
rowStyle.Resources[SystemColors.ControlBrushKey] = Brushes.Transparent;
rowStyle.Resources[SystemColors.HighlightTextBrushKey] = Brushes.LightGray;
rowStyle.Resources[SystemColors.ControlTextBrushKey] = Brushes.LightGray;

// stop backcolor going grey when window doesn't have focus.
rowStyle.Resources[SystemColors.InactiveSelectionHighlightBrushKey] = Brushes.Transparent;
rowStyle.Resources[SystemColors.InactiveSelectionHighlightTextBrushKey] = Brushes.LightGray;

这意味着当选择一行时,其背景颜色将是未选中的颜色。但是,不幸的是文本颜色(forecolor)被强制为LightGray,将其设置为Brushes.Transparent使文本不可读。

有没有办法动态设置所选文本颜色(forecolor)(基于绑定属性)?

或者有更好的方法吗?是否可以使用带有PropertyTrigger的MultiTrigger(如IsSelected)和DataTrigger(在ForeColorFlag上)?

谢谢你的帮助。

答案

将以下样式添加到应用程序资源或DataGrid的资源:

    <Style TargetType="{x:Type DataGridCell}" BasedOn="{StaticResource {x:Type DataGridCell}}">
        <Style.Triggers>
            <Trigger Property="IsSelected" Value="True">
                <Setter Property="Foreground" Value="{Binding RelativeSource={RelativeSource Self}, Path=Foreground}" />
            </Trigger>
        </Style.Triggers>
    </Style>

你告诉它将前景色设置为它已经是的颜色,我想这很棒。

另一答案

将此样式添加到应用程序的资源中或任何需要的位置:

 <Style TargetType="{x:Type DataGridCell}">
      <Style.Triggers>
          <Trigger Property="DataGridCell.IsSelected" Value="True">
              <Setter Property="Background" Value="Transparent" />
          </Trigger>
      </Style.Triggers>
  </Style>

以上是关于make datagrid选中的行文本颜色是否透明?的主要内容,如果未能解决你的问题,请参考以下文章

QTextEdit选中某行文本

如何更改 XLForm 禁用的行文本颜色 [XLFormRowDescriptorTypeText]

WPF 修改DataGrid选中行时的颜色

WPF-改变Datagrid选中行的颜色

wpf datagrid 样式怎么设置默认选中行的颜色

java对于绘制的矩形,如何用鼠标双击可以选中这个矩形,并且可以通过方法在举行框中进行文本编辑.