2010-02-01 23 views
1

J'ai trois grilles dans mon UserControl dont une commande est affichée à la fois. Dans la dernière colonne, je dois utiliser un style où je dois vérifier les données et appliquer une couleur ForeGround. Je peux écrire le style à chacun des contrôles dans 3 grilles en utilisant DataTriggers. Mais je veux un style concret dans Resource qui puisse être utilisé n'importe où. J'ai essayé MultiDataTrigger mais il ne sert pas mon but car il vérifie 2 ou plusieurs Condintions pour être vrai dans MultiDataTrigger.Conditions alors que j'ai besoin de vérifier les données dans un seul contrôle. Existe-t-il une autre solution pour y parvenir?Comment utiliser MultiDataTrigger pour vérifier qu'une seule condition est vraie dans Style.Triggers dans WPF?

Répondre

1

Si vous utilisez une sorte de grille, vous utilisez probablement CellTemplate ou une autre propriété de ce type pour accomplir votre tâche. Je pense que vous devez utiliser des styles différents dans différentes colonnes.

Mais si ces styles sont identiques à l'exception des déclencheurs, vous pouvez créer un style avec tout ce qui leur est commun, puis créer un autre style basé sur le premier. C'est un peu similaire à l'héritage dans OOP.

Voici comment cela peut ressembler à:

<Style x:Key="BaseStyle" TargetType="....."> 
    <!-- Common setters and triggers --> 
    <Setter ... /> 
    <Setter ... /> 
    <Setter ... /> 
</Style> 

<Style x:Key="InheritedStyle" BasedOn="{StaticResource BaseStyle}" TargetType="....."> 
    <!-- This style's specific setters and triggers --> 
    <Setter ... /> 
    <Style.Triggers> 
    ... 
    <Style.Triggers> 
</Style>