DataGrid 中的 RowStyle 仅部分工作
RowStyle in DataGrid working only partially
这很奇怪,所以我确定我在这里遗漏了一些(几乎)显而易见的东西。我想控制所选行和单元格的外观,所以我正在玩触发器。触发似乎有效,因为我看到了关于颜色和厚度的设置。
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="Aquamarine"></Setter>
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
<DataGrid.CellStyle>
<Style TargetType="DataGridCell">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="BorderThickness" Value="0"></Setter>
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.CellStyle>
但是,问题是行的背景在所有包含数据的列上都是默认的蓝色,而在最后一列右侧的空白 space 上是我自定义的海蓝宝石,就像下图描述了。
什么给了?我的 google-fu 没有显示任何需要删除的持久默认值...
默认蓝色是 DataGridCell
的 Template
的一部分。
您可以重新模板化 DataGridCell 并省略此功能,或者您可以只在现有 DataGridCell 样式的 IsSelected
触发器中添加一个 setter 并将 Background
设置为 Transparent
.
<DataGrid.CellStyle>
<Style TargetType="DataGridCell">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="Background" Value="Transparent"/>
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.CellStyle>
这很奇怪,所以我确定我在这里遗漏了一些(几乎)显而易见的东西。我想控制所选行和单元格的外观,所以我正在玩触发器。触发似乎有效,因为我看到了关于颜色和厚度的设置。
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="Aquamarine"></Setter>
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
<DataGrid.CellStyle>
<Style TargetType="DataGridCell">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="BorderThickness" Value="0"></Setter>
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.CellStyle>
但是,问题是行的背景在所有包含数据的列上都是默认的蓝色,而在最后一列右侧的空白 space 上是我自定义的海蓝宝石,就像下图描述了。
什么给了?我的 google-fu 没有显示任何需要删除的持久默认值...
默认蓝色是 DataGridCell
的 Template
的一部分。
您可以重新模板化 DataGridCell 并省略此功能,或者您可以只在现有 DataGridCell 样式的 IsSelected
触发器中添加一个 setter 并将 Background
设置为 Transparent
.
<DataGrid.CellStyle>
<Style TargetType="DataGridCell">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="Background" Value="Transparent"/>
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.CellStyle>