दिलचस्प पोस्ट
अपरिभाषित विधि `stringify_keys! ' रूबी ऑन रेल्स मैं जैस्मीन के साथ jQuery के AJAX ईवेंट कैसे सत्यापित करूं? नामस्थान के साथ jQuery के XML पार्सिंग स्काला की उपज क्या है? दृश्य स्टूडियो में धीमा डीबगिंग समस्या सी में लिनक्स कंसोल में दबाए गए कुंजी को कैसे संभालना है? एचटीएमएल 5 कैनवास: ज़ूमिंग पायथन में नई लाइनें सीमांकित फ़ाइलों को पढ़ने और नई लाइनों को छोड़ने का सर्वोत्तम तरीका? आईएसओ 8601 दिनांक स्वरूप पार्सिंग जैसे 2015-06-27 टी 13: 16: 37.363 जे जावा में अधिसूचना नहीं दिखा रहा है java.io.IOException: कोई प्रमाणीकरण चुनौतियों पाया नहीं PHP कर्ल के साथ JSON डेटा पोस्ट करने के लिए कैसे? एल्गोरिदम सॉर्ट करने में स्थिरता क्या है और यह क्यों महत्वपूर्ण है? SIGPIPEs को कैसे रोकें (या उन्हें ठीक से संभाल) इंटरनेट एक्सप्लोरर 10 – कैसे ग्रेस्केल फ़िल्टर लागू करें?

WPF में हाइपरलिंक का उपयोग करते हुए उदाहरण

मैंने कई सुझाव देखे हैं, ताकि आप Hyperlink नियंत्रण के माध्यम से WPF अनुप्रयोग में हाइपरलिंक जोड़ सकते हैं।

यहां बताया गया है कि कैसे मैं इसे अपने कोड में उपयोग करने का प्रयास कर रहा हूं:

 <Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" x:Class="BookmarkWizV2.InfoPanels.Windows.UrlProperties" Title="UrlProperties" Height="754" Width="576"> <Grid> <Grid.RowDefinitions> <RowDefinition></RowDefinition> <RowDefinition Height="40"/> </Grid.RowDefinitions> <Grid> <ScrollViewer ScrollViewer.VerticalScrollBarVisibility="Auto" Grid.RowSpan="2"> <StackPanel > <DockPanel LastChildFill="True" Margin="0,5"> <TextBlock Text="Url:" Margin="5" DockPanel.Dock="Left" VerticalAlignment="Center"/> <TextBox Width="Auto"> <Hyperlink NavigateUri="http://www.google.co.in"> Click here </Hyperlink> </TextBox> </DockPanel > </StackPanel> </ScrollViewer> </Grid> <StackPanel HorizontalAlignment="Right" Orientation="Horizontal" Margin="0,7,2,7" Grid.Row="1" > <Button Margin="0,0,10,0"> <TextBlock Text="Accept" Margin="15,3" /> </Button> <Button Margin="0,0,10,0"> <TextBlock Text="Cancel" Margin="15,3" /> </Button> </StackPanel> </Grid> </Window> 

मुझे निम्नलिखित त्रुटि मिल रही है:

संपत्ति 'पाठ' प्रकार 'हाइपरलिंक' के मूल्यों का समर्थन नहीं करता है

मैं क्या गलत कर रहा हूं?

Solutions Collecting From Web of "WPF में हाइपरलिंक का उपयोग करते हुए उदाहरण"

यदि आप चाहते हैं कि आपके ऐप को किसी वेब ब्राउज़र में लिंक खोलना है, तो आपको एक हाइपरलिंक जोड़ने की ज़रूरत है, जो RequestNavigate ईवेंट को फ़ंक्शन पर सेट किया जाता है, जो एक पैरामीटर के रूप में पता के साथ एक वेब-ब्राउज़र खोलता है।

 <TextBlock> <Hyperlink NavigateUri="http://www.google.com" RequestNavigate="Hyperlink_RequestNavigate"> Click here </Hyperlink> </TextBlock> 

कोड-पीछे में आपको RequestNavigate ईवेंट को प्रबंधित करने के लिए इसके जैसा कुछ जोड़ना होगा।

 private void Hyperlink_RequestNavigate(object sender, RequestNavigateEventArgs e) { Process.Start(new ProcessStartInfo(e.Uri.AbsoluteUri)); e.Handled = true; } 

इसके अलावा आपको निम्नलिखित आयातों की भी आवश्यकता होगी

 using System.Diagnostics; using System.Windows.Navigation; 

यह आपके आवेदन में ऐसा दिखेगा।

ऊ

फ़ूजी की प्रतिक्रिया के अतिरिक्त, हम हेन्डलर को पुन: प्रयोज्य बना सकते हैं जिससे इसे किसी संलग्न संपत्ति में बदल दिया जा सकता है:

 public static class HyperlinkExtensions { public static bool GetIsExternal(DependencyObject obj) { return (bool)obj.GetValue(IsExternalProperty); } public static void SetIsExternal(DependencyObject obj, bool value) { obj.SetValue(IsExternalProperty, value); } public static readonly DependencyProperty IsExternalProperty = DependencyProperty.RegisterAttached("IsExternal", typeof(bool), typeof(HyperlinkExtensions), new UIPropertyMetadata(false, OnIsExternalChanged)); private static void OnIsExternalChanged(object sender, DependencyPropertyChangedEventArgs args) { var hyperlink = sender as Hyperlink; if ((bool)args.NewValue) hyperlink.RequestNavigate += Hyperlink_RequestNavigate; else hyperlink.RequestNavigate -= Hyperlink_RequestNavigate; } private static void Hyperlink_RequestNavigate(object sender, System.Windows.Navigation.RequestNavigateEventArgs e) { Process.Start(new ProcessStartInfo(e.Uri.AbsoluteUri)); e.Handled = true; } } 

और इसे इस तरह प्रयोग करें:

 <TextBlock> <Hyperlink NavigateUri="http://stackoverflow.com" custom::HyperlinkExtensions.IsExternal="true"> Click here </Hyperlink> </TextBlock> 

Hyperlink एक नियंत्रण नहीं है, यह एक प्रवाह सामग्री तत्व है, आप केवल नियंत्रण में इसका उपयोग कर सकते हैं, जो कि TextBlock सामग्री का समर्थन करते हैं, जैसे TextBlockTextBoxes केवल सादे पाठ हैं

यदि आप बाद में स्ट्रिंग को स्थानीय बनाना चाहते हैं, तो उन उत्तर पर्याप्त नहीं हैं, मैं ऐसा कुछ सुझाव दूंगा:

 <TextBlock> <Hyperlink NavigateUri="http://labsii.com/"> <Hyperlink.Inlines> <Run Text="Click here"/> </Hyperlink.Inlines> </Hyperlink> </TextBlock> 

आईएमएचओ सबसे आसान तरीका Hyperlink से विरासत में मिली नई नियंत्रण का उपयोग करना है:

 /// <summary> /// Opens <see cref="Hyperlink.NavigateUri"/> in a default system browser /// </summary> public class ExternalBrowserHyperlink : Hyperlink { public ExternalBrowserHyperlink() { RequestNavigate += OnRequestNavigate; } private void OnRequestNavigate(object sender, RequestNavigateEventArgs e) { Process.Start(new ProcessStartInfo(e.Uri.AbsoluteUri)); e.Handled = true; } } 

मुझे पुन: प्रयोज्य हेन्डलर के आर्थर के विचार पसंद आया, लेकिन मुझे लगता है कि ऐसा करने का एक सरल तरीका है:

 private void Hyperlink_RequestNavigate(object sender, RequestNavigateEventArgs e) { if (sender.GetType() != typeof (Hyperlink)) return; string link = ((Hyperlink) sender).NavigateUri.ToString(); Process.Start(link); } 

जाहिर है कि किसी भी तरह की प्रक्रिया शुरू करने के साथ सुरक्षा जोखिम हो सकता है, इसलिए सावधान रहें

यह भी ध्यान रखें कि नेविगेशन के लिए Hyperlink उपयोग नहीं करना है। आप इसे एक आदेश में जोड़ सकते हैं।

उदाहरण के लिए:

 <TextBlock> <Hyperlink Command="{Binding ClearCommand}">Clear</Hyperlink> </TextBlock> 

उम्मीद है कि यह किसी को भी मदद करेगा

 using System.Diagnostics; using System.Windows.Documents; namespace Helpers.Controls { public class HyperlinkEx : Hyperlink { protected override void OnClick() { base.OnClick(); Process p = new Process() { StartInfo = new ProcessStartInfo() { FileName = this.NavigateUri.AbsoluteUri } }; p.Start(); } } }