Ich habe mehrere Vorschläge gesehen, dass Sie durch Hyperlink
Steuerung einen Hyperlink zur WPF-Anwendung hinzufügen können.
So versuche ich es in meinem Code zu verwenden:
<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>
Ich erhalte folgenden Fehler:
Die Eigenschaft 'Text' unterstützt keine Werte vom Typ 'Hyperlink'.
Was mache ich falsch?
RequestNavigateEventArgs
befindet sich imSystem.Windows.Navigation
Namespace.Process
undProcessStartInfo
befinden sich beide imSystem.Diagnostics
Namespace.Zusätzlich zu Fujis Antwort können wir den Handler wiederverwendbar machen und ihn in eine angehängte Eigenschaft verwandeln:
Und benutze es so:
quelle
Hyperlink
ist nicht eine Kontrolle, es ist ein Fluss Inhalt Element, können Sie es nur in Steuerelemente verwenden ein , die Unterstützung fortlaufenden Inhalt, wieTextBlock
.TextBoxes
habe nur Klartext.quelle
Wenn Sie die Zeichenfolge später lokalisieren möchten, reichen diese Antworten nicht aus. Ich würde Folgendes vorschlagen:
quelle
IMHO ist der einfachste Weg, ein neues Steuerelement zu verwenden, das geerbt wurde von
Hyperlink
:quelle
Beachten Sie auch, dass
Hyperlink
nicht für die Navigation verwendet werden muss. Sie können es mit einem Befehl verbinden.Beispielsweise:
quelle
Ich habe die Antwort in dieser Frage verwendet und habe Probleme damit.
Es wird eine Ausnahme zurückgegeben:
{"The system cannot find the file specified."}
Nach ein bisschen Nachforschungen. Es stellt sich heraus , dass , wenn Ihre WPF - Anwendung .CORE ist Sie brauchen , um
UseShellExecute
zutrue
.Dies wird in Microsoft- Dokumenten erwähnt :
So machen Sie diese Arbeit , die Sie hinzugefügt müssen ,
UseShellExecute
umtrue
:quelle
UseShelExecute = true
jeder Idee, warum?Process.Start(new ProcessStartInfo(e.Uri.AbsoluteUri) { UseShellExecute = true });
und erhalte und erhalte die Fehlermeldung "System.ComponentModel.Win32Exception: 'Das System kann die angegebene Datei nicht finden'", wenn ich versuche, dem Hyperlink zu folgenIch mochte Arthurs Idee eines wiederverwendbaren Handlers, aber ich denke, es gibt einen einfacheren Weg, dies zu tun:
Offensichtlich kann es Sicherheitsrisiken geben, wenn ein Prozess gestartet wird. Seien Sie also vorsichtig.
quelle
Hoffe das hilft auch jemandem.
quelle
Eine der schönsten Möglichkeiten meiner Meinung nach (da es jetzt allgemein verfügbar ist) ist die Verwendung von Verhaltensweisen.
Es benötigt:
Microsoft.Xaml.Behaviors.Wpf
XAML-Code:
UND
Verhaltenscode:
quelle