2009-08-10 38 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

वास्तव में ऐसा करता है - मैंने कुछ ऐसा करने की कोशिश की थी, लेकिन आधारितऑन खो रहा था। धन्यवाद! –

+12

lol मुझे एक ही समस्या को हल करने की कोशिश कर Google पर यह उत्तर मिला। अगर मैं कर सकता तो मैं खुद को वोट दूंगा! :) –

+0

मैंने स्टाइल टैग के साथ किसी परिस्थिति में किसी भी सेटर्स के बिना इसका इस्तेमाल किया जहां हाइपरलिंक अपनी अलग-अलग शैली की शैली पर विचार नहीं करता है जिसे मैंने अलग संसाधन शब्दकोश फ़ाइल में विलय किया है। बहुत अजीब ... – sergiol

संबंधित मुद्दे