Saya telah melihat beberapa saran, agar Anda dapat menambahkan hyperlink ke aplikasi WPF melalui Hyperlink
kontrol.
Inilah cara saya mencoba menggunakannya dalam kode saya:
<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>
Saya mendapatkan kesalahan berikut:
Properti 'Teks' tidak mendukung nilai tipe 'Hyperlink'.
Apa yang saya lakukan salah?
RequestNavigateEventArgs
ada diSystem.Windows.Navigation
namespace.Process
danProcessStartInfo
keduanya diSystem.Diagnostics
namespace.Selain respons Fuji, kita dapat membuat pawang dapat digunakan kembali mengubahnya menjadi properti terlampir:
Dan gunakan seperti ini:
sumber
Hyperlink
adalah tidak kontrol, itu adalah konten aliran elemen, Anda hanya dapat menggunakannya dalam kontrol yang konten dukungan aliran, sepertiTextBlock
.TextBoxes
hanya memiliki teks biasa.sumber
Jika Anda ingin melokalisasi string nanti, maka jawaban itu tidak cukup, saya akan menyarankan sesuatu seperti:
sumber
IMHO cara paling sederhana adalah dengan menggunakan kontrol baru yang diwarisi dari
Hyperlink
:sumber
Perhatikan juga bahwa
Hyperlink
tidak harus digunakan untuk navigasi. Anda dapat menghubungkannya ke perintah.Sebagai contoh:
sumber
Saya menggunakan jawaban dalam pertanyaan ini dan saya punya masalah dengan itu.
Ini mengembalikan pengecualian:
{"The system cannot find the file specified."}
Setelah sedikit penyelidikan. Ternyata bahwa jika aplikasi WPF Anda .CORE Anda perlu membuat
UseShellExecute
untuktrue
.Ini disebutkan dalam dokumen Microsoft :
Jadi untuk membuatnya bekerja, Anda perlu menambahkan
UseShellExecute
ketrue
:sumber
UseShelExecute = true
alasan mengapa?Process.Start(new ProcessStartInfo(e.Uri.AbsoluteUri) { UseShellExecute = true });
dan mendapatkan kesalahan "System.ComponentModel.Win32Exception: 'Sistem tidak dapat menemukan file yang ditentukan'" ketika saya mencoba mengikuti hyperlinkSaya menyukai gagasan Arthur tentang penangan yang dapat digunakan kembali, tetapi saya pikir ada cara yang lebih sederhana untuk melakukannya:
Jelas ada risiko keamanan dengan memulai segala jenis proses, jadi berhati-hatilah.
sumber
Semoga ini bisa membantu seseorang juga.
sumber
Salah satu cara paling indah menurut saya (karena sekarang sudah umum tersedia) adalah menggunakan perilaku.
Itu membutuhkan:
Microsoft.Xaml.Behaviors.Wpf
kode xaml:
DAN
kode perilaku:
sumber