2010-11-10 32 views
1

J'ai une grille de valeurs dans un DataGrid. Dans chaque cellule j'ai l'une des 4 valeurs, je veux que chaque valeur ait une couleur associée.WPF - XAML - Déclenchement de données sans déclencheur de liaison/Valeur uniquement

Dans le passé tous mes déclencheurs de données ont été du format;

<DataTrigger Binding="{Binding Status}" Value="R"> 
    <Setter Property="xcdg:DataRow.Background" Value="Pink" /> 
</DataTrigger> 

Mais j'ai besoin de quelque chose du format;

<DataTrigger Binding="{Binding *}" Value="R"> 
    <Setter Property="xcdg:DataRow.Background" Value="Pink" /> 
</DataTrigger> 

Pour que la valeur de toute cellule soit vérifiée. La raison pour laquelle je ne peux pas utiliser les liaisons explicites est que le nombre de colonnes et leurs noms sont dynamiques, j'utilise extend CustomTypeDescriptor pour exposer les colonnes et les lignes à entrer dans la grille.

Merci d'avance!

Répondre

0
<DataTrigger Binding="{Binding Path=Content, RelativeSource={x:Static RelativeSource.Self}}" Value="Failure"> 
    <Setter Property="xcdg:DataRow.Background" Value="Red" /> 
</DataTrigger> 

Je devais utiliser une source relative.

En plus de cela, ce que j'ai fini par utiliser était;

 <xcdg:DataGridControl.Resources> 
      <c:ColorConverter x:Key="colorConverter" /> 
      <Style TargetType="{x:Type xcdg:DataCell}"> 
       <Style.Triggers> 
        <DataTrigger Binding="{Binding Path=IsSelected, RelativeSource={RelativeSource AncestorType={x:Type xcdg:DataRow}}}" Value="False"> 
         <Setter Property="xcdg:DataCell.Background" Value="{Binding RelativeSource={x:Static RelativeSource.Self}, Converter={StaticResource colorConverter}}" /> 
        </DataTrigger> 
        <DataTrigger Binding="{Binding Path=IsDirty, RelativeSource={RelativeSource AncestorType={x:Type xcdg:DataRow}}}" Value="True"> 
         <Setter Property="xcdg:DataCell.Background" Value="{Binding RelativeSource={x:Static RelativeSource.Self}, Converter={StaticResource colorConverter}}" /> 
        </DataTrigger> 
       </Style.Triggers> 
      </Style> 
     </xcdg:DataGridControl.Resources> 

Où mon convertisseur de couleur ressemble un peu à ceci; Mon seul problème maintenant est que lorsque je fais défiler mes couleurs d'arrière-plan ne sont pas mises à jour lorsque les DataRows sont réutilisés.

Je ne trouve pas d'événement à raccorder lorsqu'un DataRow est réutilisé ...

0

Est-ce une option d'utiliser un ValueConverter dans votre liaison? De cette façon, vous pouvez vérifier dans le convertisseur quelle valeur il devrait retourner.