2012-10-05 25 views
12

मेरे सी # स्टैंडअलोन एप्लिकेशन में, मैं उपयोगकर्ताओं को अपने पसंदीदा ब्राउज़र को लॉन्च करने वाले लिंक पर क्लिक करना चाहता हूं।सी # टेक्स्टब्लॉक में हाइपरलिंक: जब मैं इसे क्लिक करता हूं तो कुछ भी नहीं होता है

System.Windows.Controls.TextBlock text = new TextBlock(); 
Run run = new Run("Link Text"); 

Hyperlink link = new Hyperlink(run); 
link.NavigateUri = new Uri("http://w3.org"); 
text.Inlines.Add(link); 

लिंक सही तरीके से प्रदर्शित होता है।

जब मैं माउस को उस पर ले जाता हूं, तो लिंक लाल हो जाता है।

समस्या: जब मैं इसे क्लिक करता हूं, कुछ भी नहीं होता है।

क्या मैंने कुछ भूल लिया? क्या मुझे लिंक को खोले जाने के लिए किसी प्रकार की विधि को लागू करने की ज़रूरत है?

+0

आप link.Click घटना के लिए ईवेंट हैंडलर जोड़ा है? –

+0

संभावित डुप्लिकेट: http://stackoverflow.com/questions/10238694/example-using-hyperlink-in-wpf – Dennis

+0

@ डेनिस: मैं कहूंगा कि यह एक सीमा रेखा डुप्लिकेट है: यह एक्सएएमएल के पीछे कोड में हैंडलर सेट करता है। – markmuetz

उत्तर

17

आपको हाइपरलिंक की RequestNavigate ईवेंट को संभालने की आवश्यकता है। इसे करने का एक त्वरित तरीका यहां दिया गया है:

link.RequestNavigate += (sender, e) => 
{ 
    System.Diagnostics.Process.Start(e.Uri.ToString()); 
}; 
4

क्या आप 'हाइपरलिंक.रूक्वेस्ट नेविगेट' ईवेंट को संभालने वाले हैं? जब कोई उपयोगकर्ता एक WPF विंडो में हाइपरलिंक पर क्लिक करता है तो यह स्वचालित रूप से अपने NavigateUri प्रॉपर्टी में निर्दिष्ट यूआरआई के साथ ब्राउज़र नहीं खोलता है।

अपने में कोड-पीछे आप की तरह कुछ कर सकते हैं:

link.RequestNavigate += LinkOnRequestNavigate; 

private void LinkOnRequestNavigate(object sender, RequestNavigateEventArgs e) 
{ 
    System.Diagnostics.Process.Start(e.Uri.ToString()); 
} 
संबंधित मुद्दे

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