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

问题描述:

如何在我的行中保留文本,例如当DataGrid行被选中时为白色,以及当它处于非活动选择模式时(它被选中现在用户点击另一个控件即文本框)。当选择单元格/行时更改单元格/行的文本颜色 - DataGrid WPF

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

<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中的文本仍然是黑色的..

+0

[设置选中行时WPF DataGrid行的文本颜色]的可能重复(http://*.com/questions/4104646/setting-the-text-colour-of-a-wpf-datagrid- row-when-row-is-selected) – AlSki

尝试以下刷资源添加到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的控制模板。

+1

比它可能会更好地覆盖它现在的情况下,如果它将用于其他操作系统的......我真的想知道如何触发器不起作用,我想他们必须工作100%! –

+0

他们工作;)看看我的答案。 –

尝试这种风格

<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>