2017-03-16 2 views
1

Comment puis-je conserver le texte de ma ligne coloré par exemple blanc lorsque la ligne DataGrid est sélectionnée, et également lorsqu'elle est en mode Sélection inactive (elle a été sélectionnée et maintenant l'utilisateur a cliqué sur un autre contrôle c'est-à-dire une zone de texte).Modifier la couleur du texte de la cellule/ligne lorsque la cellule/ligne est sélectionnée - DataGrid WPF

J'ai essayé avec ce (set style de cellule):

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

Où je l'ai dit dans mon 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> 

Comme il est possible de le remarquer, j'ai essayé de le faire avec déclencheurs, c.-à-d. quand la cellule est sélectionnée colorie mon texte à l'intérieur de la cellule avec la couleur blanche etc., mais inconsciemment cela ne fonctionne pas

Mon texte dans DataGrid quand la cellule/ligne est sélectionnée est encore noir ..

+0

Copie possible de [Définition de la couleur du texte d'une ligne WPG DataGrid lorsque la ligne est sélectionnée] (http://stackoverflow.com/questions/4104646/setting-the-text-colour-of-a-wpf-datagrid- row-when-row-is-selected) – AlSki

Répondre

1

Essayez d'ajouter les ressources suivantes brosse à 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> 

devrait fonctionner sous Windows 7. Sous Windows 8 et plus tard vous devez remplacer le modèle de contrôle du DataGridRow.

+1

qu'il ne soit peut-être préférable de le surcharger en ce moment au cas où il serait utilisé sur d'autres OS ... Et je me demande vraiment comment les déclencheurs n'ont pas fonctionné ici, pensais-je ils doivent travailler à 100%! –

+0

Ils travaillent;) Jetez un oeil à ma réponse. –

1

Essayez ce style

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