选择单元格/行时更改单元格/行文本颜色 - DataGrid WPF

时间:2017-03-16 10:42:36

标签: c# wpf colors cell wpfdatagrid

当选择DataGrid Row时,以及当它处于非活动选择模式时(如果它被选中并且现在用户点击另一个控件即文本框),我怎么能将我的行中的文本保持为彩色,例如白色。

我试过这个(设置单元格样式):

<DataGrid.CellStyle>
    <StaticResource ResourceKey="DataGridCentering"/>
</DataGrid.CellStyle>

我在App.Xaml中说的话:

<Style x:Key="DataGridCentering" TargetType="{x:Type DataGridCell}">
     <Setter Property="Template">
         <Setter.Value>
             <ControlTemplate TargetType="{x:Type DataGridCell}">
                 <Grid Background="{TemplateBinding Background}">
                     <ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center"  />
                 </Grid>
              </ControlTemplate>
         </Setter.Value>
     </Setter>
     <Setter Property="FocusVisualStyle" Value="{x:Null}"/>
     <Style.Triggers>
         <Trigger Property="IsSelected" Value="True">
             <Setter Property="Foreground" Value="White"/>
         </Trigger>
      </Style.Triggers>
</Style>

正如可以注意到的那样,我尝试用触发器来做,即当选择单元格时,我的文本在单元格内用白色等, 但不经意的是这不起作用

当选择单元格/行时,我在DataGrid中的文本仍为黑色..

2 个答案:

答案 0 :(得分:1)

试试这个风格

<DataGrid.Resources>
    <Style TargetType="{x:Type DataGridCell}">
        <Style.Triggers>
            <Trigger Property="IsSelected"
                     Value="True">
                <Setter Property="Foreground"
                        Value="Red" />
            </Trigger>
        </Style.Triggers>
    </Style>
</DataGrid.Resources>

答案 1 :(得分:1)

尝试将以下画笔资源添加到DataGrid

<DataGrid>
    <DataGrid.Resources>
        <SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="White"/>
        <SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightTextBrushKey}" Color="White"/>
    </DataGrid.Resources>
    ...
</DataGrid>

应该适用于Windows 7.在Windows 8及更高版本中,您必须覆盖DataGridRow的控件模板。