【发布时间】:2021-12-07 17:49:34
【问题描述】:
问题
使用的样式:
DataGridRowDataGridCell
我可以使突出显示或单元格填充起作用,但不能同时。我尝试了许许多多不同的方法(例如,资源与特定的 DataGrid 样式),但没有任何效果并且允许质疑。
<UserControl.Resources>
<!-- DataGridRow style -->
<Style x:Key="MyRowStyle" TargetType="{x:Type DataGridRow}">
<Style.Resources>
<SolidColorBrush
x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="#E5BE47" />
<SolidColorBrush
x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="Blue" />
</Style.Resources>
</Style>
<!-- DataGridCell style -->
<Style x:Key="MyCellStyle" TargetType="{x:Type DataGridCell}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridCell}">
<Border x:Name="border" Padding="15,10,10,15">
<ContentPresenter/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</UserControl.Resources>
<Grid>
<!-- BOTH styles are used, which illustrates the problem: -->
<DataGrid x:Name="Connections" AutoGenerateColumns="False"
RowStyle="{StaticResource MyRowStyle}"
CellStyle="{StaticResource MyCellStyle}">
<DataGrid.Columns>
<DataGridTextColumn Header="Process Id"/>
<DataGridTextColumn Header="Name"/>
<DataGridTextColumn Header="Application"/>
<DataGridTextColumn Header="Directory" Width="*"/>
</DataGrid.Columns>
</DataGrid>
</Grid>
前景将正确更改为“红色”,但背景仍为白色(而不是 #E5BE47 定义的黄色)。由于某些我不明白的原因,似乎完全忽略了 HighlightBrushKey 何时还使用了 DataGridCell 样式。
这是一个 AND 问题,而不是 OR 问题。如何在 DataGrid 中使用这两种样式?另外,样式有效。 问题是两者的结合......两者都不能一起工作 - 为什么以及如何解决?
左输出,右输出:
如果DataGridCell 样式被删除,则荧光笔的背景颜色可以正常工作...但这不是解决方案,因为它会删除所需的填充。
【问题讨论】: