使用模板化 DataGridRow 为 DataGrid 设置 AlternatingRowBackground

Setting AlternatingRowBackground for DataGrid with Templated DataGridRow

我需要具有黑色和深灰色行的 DataGrid。默认情况下,它在每一行的左侧都有灰色矩形(在屏幕截图中用红色标记),这是我不需要的。要删除它,我必须使用 DataGridRow 的模板。我遇到的问题是 AlternatingRowBackground 在这种情况下不起作用,尽管我尝试为 Border 和 DataGridCellsPresenter 设置 Background="Transparent"。我找到了 VisualStates 的例子,但这段代码看起来很重。有什么好的方法可以解决吗?

<Style TargetType="{x:Type DataGridRow}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type DataGridRow}">
                    <Border>
                        <DataGridCellsPresenter/>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

<Style TargetType="{x:Type DataGrid}">
        <Setter Property="Background"
                Value="Black" />
        <Setter Property="Foreground"
                Value="White" />
        <Setter Property="RowBackground"
                Value="Black" />
        <Setter Property="AlternatingRowBackground"
                Value="DarkGray" />
    </Style>

灰色矩形就是所谓的行Header。默认情况下,DataGrid 打开行和列 header。您通过设置

将其关闭 header 行
HeadersVisibility=Column

因此,您不需要模板即可完成。