2014-04-30 6 views
0

Dans mon application WPF, j'ai une grille de données. J'essaye de changer la couleur d'une cellule dans une grille de données basée sur une certaine valeur de propriété. Cette partie fonctionne. Cependant, le problème est que la couleur de la police de la ligne entière a changé, je veux juste que la police de la cellule change de couleur si la condition est remplie.La couleur de la police de la cellule Datagrid change la ligne entière

Voici mon code. J'ai pensé en mettant le TargetType comme DatagridCell que cela affecterait seulement une cellule pas la rangée entière.

<!-- DataGrid Cell style --> 
    <Style x:Key="DG_Cell" TargetType="{x:Type DataGridCell}"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type DataGridCell}"> 
        <Border x:Name="border" 
           Background="Transparent" 
           BorderBrush="Transparent" 
           BorderThickness="1" 
           SnapsToDevicePixels="True"> 
         <ContentPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" /> 
        </Border> 
        <ControlTemplate.Triggers> 
         <DataTrigger Binding="{Binding NominalDiff, Converter={StaticResource nominalPosToBool}, ConverterParameter=0}" Value="True"> 
          <Setter Property="Foreground" Value="Green"/> 
         </DataTrigger> 
         <DataTrigger Binding="{Binding NominalDiff, Converter={StaticResource nominalNegToBool}, ConverterParameter=0}" Value="True"> 
          <Setter Property="Foreground" Value="Red"/> 
         </DataTrigger> 
         <DataTrigger Binding="{Binding PriceDiff, Converter={StaticResource priceToBool}, ConverterParameter=0}" Value="True"> 
          <Setter Property="Foreground" Value="Blue"/> 
         </DataTrigger> 
        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter>    
     <Style.Triggers> 
      <Trigger Property="IsSelected" Value="True"> 
       <Setter Property="Foreground" Value="Black"/> 
       <Setter Property="FontWeight" Value="Bold"/> 
      </Trigger> 
     </Style.Triggers>    
    </Style> 

Répondre

0

Vous devriez probablement changer la propriété SelectionUnit dans votre DataGrid:

SelectionUnit="Cell" 
Questions connexes