如何在WPF应用程序中使用XAML使用样式向DataGridTextColumn添加多个更改?

时间:2019-01-13 14:56:58

标签: wpf xaml

向DataGrid中的单元格添加多个更改。

我有DataGrid,只想向一列添加样式。我设法更改了单元格的背景颜色:

<DataGrid.Resources>
       <SolidColorBrush x:Key="backColour" Color="#E9E9E9" />
</DataGrid.Resources>


<DataGrid.Columns>
        <DataGridTextColumn Header="Str" Binding="{Binding Str}">                                    
                 <DataGridTextColumn.CellStyle>
                      <Style TargetType="DataGridCell">
         <Setter Property="Background" Value="{StaticResource backColour}"/>
                      </Style>
                  </DataGridTextColumn.CellStyle>
        </DataGridTextColumn>
</DataGrid.Columns>

当选中该行时,文本变白,但是我想补充一下,如果选中该行,则文本变黑。如何添加此其他更改?我找到了如何将其设为黑色(Setting the text Colour of a WPF DataGrid Row when row is selected),但不知道如何将其与以相同样式更改背景相关联。

1 个答案:

答案 0 :(得分:0)

您可以从提供的链接中将触发器添加到您定义的Style

<DataGridTextColumn.CellStyle>
    <Style TargetType="DataGridCell">
        <Setter Property="Background" Value="{StaticResource backColour}"/>
        <Style.Triggers>
            <Trigger Property="IsSelected" Value="True">
                <Setter Property="Foreground" Value="Black"/>
            </Trigger>
        </Style.Triggers>
    </Style>
</DataGridTextColumn.CellStyle>

但是考虑到Foreground在未选择行时也是黑色的,您可以使Foreground始终是黑色的:

<DataGridTextColumn.CellStyle>
    <Style TargetType="DataGridCell">
        <Setter Property="Background" Value="{StaticResource backColour}"/>
        <Setter Property="Foreground" Value="Black" />
    </Style>
</DataGridTextColumn.CellStyle>