【问题标题】:WPF datagrid and rows coloringWPF 数据网格和行着色
【发布时间】:2019-04-17 05:44:58
【问题描述】:

我正在尝试在 WinForms 中执行一些简单的操作,但在 WPF 中变得几乎不可能。我需要使用两种阴影(一种用于奇数行,一种用于偶数行 - 又名 AlternatingRowBackground)对行(很长,很多值)进行着色。似乎 - 如果我将任何画笔设置为 AlternatingRowBackground,无论我试图设置什么(即在我的数据表中绑定一些值以使某些行以红色背景突出显示) - 操纵 RowStyle 或尝试在 LoadedRow 内强制行背景事件函数 - 所有这些都被忽略。如果我将删除 AlternatingRowBackground 画笔,RowStyle 开始工作,但我没有交替行阴影。

所以我尝试使用 MultiDataTrigger 来(多重)绑定这个假设突出显示的值和可以显示行索引的东西 - 手动创建常规/交替颜色。我需要它,因为 DataGrid 已被过滤。我不能在数据表中使用一些假值来确定当前行索引。换句话说 - DataGrid 行索引与数据表行索引不同。我试图绑定 DataGridRow 本身。但是在转换过程中,行在数据网格中没有索引(总是-1)。

有什么方法可以同时设置 AlternatingRowColor 和一些行以不同的背景突出显示?

【问题讨论】:

  • >THIS< 问题中的第二个答案会有所帮助。您可以尝试使用 RowStyle 而不是 CellStyle。
  • 查看您的 XAML 会很有帮助。也请花一点时间阅读MCVE
  • 感谢您的提示,但是 - Wojtman - 我认为您的意思是使用 CellStyle 而不是 RowStyle。 Rekshino:我没有在 XAML 中这样做。由于许多原因,我需要在代码中执行此操作(不仅仅是一个数据网格、一组数据网格等)。对我来说 - 在哪里添加 CellStyle 有点不清楚。我在提供自动生成列的事件函数中做到了这一点。但是 - 在这里 - 我仍然无法访问当前的 RowIndex...

标签: c# wpf datagrid


【解决方案1】:

问题是优先级。属性中设置的值具有样式中设置的更高优先级。因此,如果您在 Style 中设置 AlternatingRowBackground 而不是作为元素的属性,所有将按预期工作:

<DataGrid.Style>
    <Style TargetType="DataGrid">
        <Setter Property="AlternatingRowBackground" Value="Aquamarine"/>
    </Style>
</DataGrid.Style>

【讨论】:

  • 很好的提示。谢谢。这是 WPF 中我在任何地方都找不到的东西之一。事情的优先级。
猜你喜欢
  • 1970-01-01
  • 2012-04-20
  • 2011-07-01
  • 2018-02-02
  • 2011-11-04
  • 1970-01-01
  • 1970-01-01
  • 2011-08-02
  • 1970-01-01
相关资源
最近更新 更多