使用模板化 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
因此,您不需要模板即可完成。
我需要具有黑色和深灰色行的 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
因此,您不需要模板即可完成。