2010-03-01 14 views
-1

J'ai une zone de liste qui affiche les éléments de port (classe personnalisée) qui sont formatées avec un DataTemplate (voir ci-dessous). Il y a un élément de bordure dans le gabarit (je l'appelle une gemme) qui affiche quel élément est actif (non sélectionné) qui sera l'élément auquel les produits seront ajoutés.DataTriggers dans Expression Blend

template.png

Il y a une propriété booléenne dans la classe d'expédition (actif) qui est situé dans un gestionnaire d'événements, cliquez pour l'élément Gem. Normalement, le Gem est censé être sombre comme dans la première image, puis allumé lorsqu'il est actif.

J'ai un DataTrigger mis en place dans le DataTemplate pour gérer le changement de la couleur de la pierre.

<DataTemplate.Triggers> 
<DataTrigger Binding="{Binding Active}" Value="True"> 
    <Setter TargetName="ActiveGem" Property="Background"> 
    <Setter.Value> 
    <RadialGradientBrush> 
    <GradientStop Color="Red" Offset="0"/> 
    <GradientStop Color="#FF820000" Offset="1"/> 
    </RadialGradientBrush> 
    </Setter.Value> 
    </Setter> 
</DataTrigger> 
<DataTrigger Binding="{Binding Active}" Value="False"> 
    <Setter TargetName="ActiveGem" Property="Background"> 
    <Setter.Value> 
    <RadialGradientBrush> 
    <GradientStop Color="Red" Offset="0"/> 
    <GradientStop Color="#FF820000" Offset="1"/> 
    </RadialGradientBrush> 
    </Setter.Value> 
    </Setter> 
</DataTrigger> 
</DataTemplate.Triggers> 

Pour une raison quelconque, cependant, lorsque les charges d'application toutes les pierres précieuses sont allumées montrant les paquets sont tous actifs.

** En raison des limites de réputation sur Stackoverflow Je ne peux pas encore poster des liens plus. L'image ci-dessous est au même domaine que celui ci-dessus.

/ExternalImages/ActiveItems.PNG

J'ai vérifié que tous les éléments sont en fait Active = Faux, mais le bijou est toujours allumé De plus, lorsque j'exécute l'événement click, je parcours la collection Package et je mets tout Active = False, puis active le TemplatedParent de l'expéditeur.

Dim ActiveShipments = From ship In ShipmentData _ 
         Where ship.Active = True 
    For Each MyShipment As Shipment In ActiveShipments 
     MyShipment.Active = False 
    Next 
    Dim Gem As Border = sender 
    Dim ShipmentObject As ContentPresenter = Gem.TemplatedParent 
    ShipmentObject.Content.Active = True 

Les Gems ne retournent pas à leur état éteint (ce qu'ils n'ont jamais été en premier lieu). Ils ne restent allumés. Des idées?

Cory

--Oddly, a montré seulement dans la zone de code de la première édition ... corrigée.

+0

Aussi, j'oublié de demander, est-il un moyen de créer et de modifier DataTriggers dans Expression Blend 3? Je ne vois aucun moyen de le faire, et je voudrais utiliser le concepteur si possible, car je ne suis pas sûr de la syntaxe utilisée ci-dessus pour la liaison. Cory – CodeWarrior

+0

besoin de voir plus de code, en particulier, le déclencheur de données qui gère le changement de couleur. 90% sûr que c'est là que le problème est. – Charlie

+0

Salut Cory, Avez-vous trouvé un moyen de traiter DataTriggers dans Expression Blend? Je suis coincé avec ça: -s. Merci! –

Répondre

0

En fait, je compris. Lorsque je faisais les RadialGradiantBrushes, je n'ai pas sauvegardé le fichier non éclairé ou je l'ai copié/collé dessus et je ne l'ai pas édité ou quelque chose comme ça. Le déclencheur de données tirait correctement, mais comme les deux gradients étaient de la variété allumée, il semblait que rien ne se passait. Désolé pour le dérangement!

Cory