当样式已经设置时,修改DataGridCell背景颜色

本文关键字:修改 DataGridCell 背景 颜色 样式 设置 | 更新日期: 2023-09-27 18:16:53

我不是一个UI的家伙,但我一直任务似乎是一个简单的事情去做。

我需要改变一些已经建立的工作数据网格的列背景为什么用户说将更容易阅读。我读到的所有东西都指向使用<Style TargetType="DataGridCell">。这很有意义,也很容易实现,除非有一个函数已经应用到不同的目标上,而我不能再添加一个。

如何修改DataGridCell的背景颜色,当一个风格已经设置?

这是其中一列现在的样子

<DataGridTextColumn x:Name="colGoalPercentCases" u:XAMLProperties.GroupName="Cases" Width="*" IsReadOnly="False"
                    Binding="{Binding Path=GoalPercent_Cases, TargetNullValue='', Mode=TwoWay, StringFormat='{}{0:#,#.00''%;-#,#.00''%}',NotifyOnTargetUpdated=True}">
    <DataGridTextColumn.ElementStyle>
        <Style TargetType="TextBlock">
            <Setter Property="HorizontalAlignment" Value="Right"/>
            <Setter Property="VerticalAlignment" Value="Center"/>
        </Style>
    </DataGridTextColumn.ElementStyle>
    <DataGridTextColumn.EditingElementStyle>
        <Style TargetType="{x:Type TextBox}">
            <EventSetter Event="LostFocus" Handler="GoalLostFocus" />
            <EventSetter Event="LostKeyboardFocus" Handler="GoalLostKeyboardFocus" />
        </Style>
    </DataGridTextColumn.EditingElementStyle>
    <DataGridTextColumn.HeaderTemplate>
        <DataTemplate>
            <Grid MinWidth="{Binding Path=ActualWidth, ElementName=colGoalPercentCases}">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*"/>
                </Grid.ColumnDefinitions>
                <Grid.RowDefinitions>
                    <RowDefinition Height="*"/>
                    <RowDefinition Height="*"/>
                </Grid.RowDefinitions>
                <Label Content="CS %" Margin="1,0,10,0" Grid.Row="0" Grid.Column="0" HorizontalAlignment="Stretch" HorizontalContentAlignment="Center"/>
                <TextBox x:Name="tbCasePercent" Margin="1,0,10,0" IsReadOnly="True" Grid.Row="1" Grid.Column="0" Width="Auto" HorizontalAlignment="Stretch" HorizontalContentAlignment="Right"/>
            </Grid>
        </DataTemplate>
    </DataGridTextColumn.HeaderTemplate>
</DataGridTextColumn>

EDIT:添加单元格样式代码-解决我的问题

<DataGridTextColumn.CellStyle>
    <Style TargetType="DataGridCell" BasedOn="{StaticResource {x:Type DataGridCell}}">
        <Setter Property="Background" Value="#FFC7D9FF"/>
    </Style>
</DataGridTextColumn.CellStyle>

当样式已经设置时,修改DataGridCell背景颜色

您可以通过CellStyle属性轻松更改某些列的单元格样式。使用BasedOn属性来继承现有的样式:

<DataGridTextColumn.CellStyle>
    <Style TargetType="DataGridCell" BasedOn="{StaticResource {x:Type DataGridCell}}">
        <Setter Property="Background" Value="Chocolate"/>
    </Style>
</DataGridTextColumn.CellStyle>