2009-08-10 15 views
18

私はWPFアプリケーションを作成しています。ハイパーリンクの一部をデフォルトの青色にしたいものもあれば、緑色にするものもあります。問題ありません - 私はちょうどForegroundを設定することができます:私はこれを行うときホバーカラーを失うことなくハイパーリンクのフォアグラウンドを変更する

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

トラブルがあり、ホバー効果は消えません。通常のハイパーリンクでは、リンク上でマウスを動かすと赤色に変わり、マウスを離すと青色に戻ります。しかし、フォアグラウンドプロパティが割り当てられたハイパーリンクでは、それは常にその色です - ホバーオンのホバーは完全に抑制されます。

デフォルトのホバー動作と色を失うことなく、ハイパーリンクの色を変更するにはどうすればよいですか?

答えて

32

フォアグラウンドを直接設定すると機能しません。スタイルに設定すると、のいずれかが機能しません。デフォルトのハイパーリンクスタイルからそのスタイルを「派生」しないとOnMouseOverトリガ)。

<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> 

は、ウィンドウのリソースに戻し、そのスタイルを抽出し、おそらくより可読XAMLのためになるだろうキーでそれを参照するが、上記のコードは、仕事をしていません:これは動作します。

+0

実際には、私は類似のものを試しましたが、BasedOnが欠けていました。ありがとう! –

+12

lol私は同じ問題を解決しようとすると、この答えをGoogleで見つけました。もし私ができれば私は自分自身を投票するだろう! :) –

+0

ハイパーリンクが私がマージした別のリソースディクショナリファイルで定義した独自のデフォルトスタイルを考慮していないと思われる状況で、スタイルタグでスタイルタグを使用しました。非常に奇妙な... – sergiol

関連する問題