2009-03-05 10 views
2

Je voulais changer la couleur de premier plan quand je choisis un ListBoxItem et je l'ai fait en utilisant ce bit de code:WPF Trigger pour IsSelected dans un DataTemplate pour les articles ListBox avec Blend

<DataTrigger Binding="{Binding 
RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBoxItem}},Path=IsSelected}" Value="True"> 
          <Setter TargetName="descriptionTB" Property="Foreground" Value="#000"/> 
</DataTrigger> 

Vous pouvez trouver la réponse here .

Mais si je veux un concepteur de faire cela dans mélange, comment le ferait-il sans percer dans xaml?

Merci

Répondre

2

Artur,

Le concepteur Déclencheurs dans Expression Blend permet seulement d'ajouter et de modifier eventtriggers et déclenche la propriété. Je n'ai pas trouvé un moyen d'ajouter DataTriggers avec Blend. Je ne suis pas sûr non plus de savoir comment définir RelativeSource Binding en utilisant Blend. J'ai toujours donné le code XAML pour le test et j'utilise Blend pour tout le reste.

2

Peut-être que je suis malentendu à la question, mais ne pouvez pas vous créer juste une ressource de style pour descriptionTB et laisser le concepteur seulement faire face à cette définition de style et non la liaison?

<DataTrigger Binding=".."> 
    <Setter TargetName="descriptionTB" Property="Style" Value="{StaticResource DescriptionTextBoxStyle}" /> 
</DataTrigger> 

Dans la section des ressources de votre contrôle ou d'une fenêtre vous ajoutez la définition de style:

<Style TargetType="{x:Type TextBox}" x:Key="DescriptionTextBoxStyle"> 
    <Setter Property="Foreground" Value="#000" /> 
</Style> 

Si vous voulez isoler davantage le concepteur de la mécanique de l'interface utilisateur, vous pouvez créer un dictionnaire de ressources en un fichier xaml séparé dans lequel vous pouvez collecter tous les styles destinés au concepteur. Vous pouvez ensuite fusionner ce dictionnaire de ressources avec les ressources principales de votre contrôle ou application.