2009-08-10 11 views
18

Je suis en train d'écrire une application WPF, et je souhaite que certains de mes liens hypertexte soient par défaut bleus et que d'autres soient verts. Pas de problème - je peux mettre Foreground:Modification du premier plan d'un lien hypertexte sans perdre la couleur du pointeur

<TextBlock><Hyperlink Foreground="#0C0">Mark as done</Hyperlink></TextBlock> 

Le problème est, quand je fais cela, l'effet de vol stationnaire disparaît. Dans un lien hypertexte normal, lorsque je déplace la souris sur le lien, il devient rouge, et lorsque je déplace la souris, il redevient bleu. Mais dans un lien hypertexte avec la propriété Foreground assignée, c'est toujours cette couleur - le rouge sur le vol stationnaire est totalement supprimé.

Comment puis-je modifier la couleur d'un lien hypertexte, sans perdre le comportement et la couleur du survol par défaut?

Répondre

32

Définir le Foreground directement (comme vous avez fait) ne fonctionne pas, et le définir dans un Style ne fonctionne pas non plus, sauf si vous "dérivez" ce style du style Hyperlien par défaut (qui doit inclure le déclencheur OnMouseOver). Donc, cela fonctionne:

<TextBlock> 
    <Hyperlink> 
     <Hyperlink.Style> 
      <Style TargetType="Hyperlink" 
        BasedOn="{StaticResource {x:Type Hyperlink}}"> 
       <Setter Property="Foreground" Value="#0C0"/> 
      </Style> 
     </Hyperlink.Style> 
     Mark as done 
    </Hyperlink> 
</TextBlock> 

le style extractible qui de nouveau dans les ressources de la fenêtre et le référencement avec une clé serait probablement faire pour XAML plus lisible, mais le code ci-dessus fait le travail.

+0

En effet, j'ai essayé quelque chose de similaire, mais il manquait le BasedOn. Merci! –

+12

lol Je viens de trouver cette réponse sur Google, en essayant de résoudre le même problème. Je voterais si je pouvais! :) –

+0

Je l'ai utilisé avec une balise de style sans setters dans une situation où Hyperlink ne semble pas considérer son propre style par défaut que j'ai défini pour cela dans un fichier de dictionnaire de ressources séparé que j'ai fusionné. Très étrange ... – sergiol

Questions connexes