He visto varias sugerencias, que puede agregar un hipervínculo a la aplicación WPF a través del Hyperlinkcontrol.
Así es como estoy tratando de usarlo en mi código:
<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>
Recibo el siguiente error:
La propiedad 'Texto' no admite valores de tipo 'Hipervínculo'.
¿Qué estoy haciendo mal?


RequestNavigateEventArgsestá en elSystem.Windows.Navigationespacio de nombres.ProcessyProcessStartInfoambos están en elSystem.Diagnosticsespacio de nombres.Además de la respuesta de Fuji, podemos hacer que el controlador sea reutilizable convirtiéndolo en una propiedad adjunta:
Y úsalo así:
fuente
Hyperlinkno es un control, es un elemento de contenido de flujo , solo puede usarlo en controles que admitan contenido de flujo, como aTextBlock.TextBoxessolo tiene texto plano.fuente
Si desea localizar la cadena más tarde, entonces esas respuestas no son suficientes, sugeriría algo como:
fuente
En mi humilde opinión, la forma más sencilla es utilizar un nuevo control heredado de
Hyperlink:fuente
Tenga en cuenta también que
Hyperlinkno tiene que usarse para la navegación. Puedes conectarlo a un comando.Por ejemplo:
fuente
Utilicé la respuesta en esta pregunta y tuve un problema con ella.
Devolver excepción:
{"The system cannot find the file specified."}Después de un poco de investigación. Resulta que si su aplicación WPF es .CORE que necesita para hacer
UseShellExecuteatrue.Esto se menciona en los documentos de Microsoft :
Entonces, para que esto funcione, debe agregar
UseShellExecuteatrue:fuente
UseShelExecute = truealguna idea de por qué.Process.Start(new ProcessStartInfo(e.Uri.AbsoluteUri) { UseShellExecute = true });y aparece el error "System.ComponentModel.Win32Exception: 'El sistema no puede encontrar el archivo especificado'" cuando intento seguir el hipervínculoMe gustó la idea de Arthur de un controlador reutilizable, pero creo que hay una manera más sencilla de hacerlo:
Obviamente, podría haber riesgos de seguridad al iniciar cualquier tipo de proceso, así que tenga cuidado.
fuente
Espero que esto ayude a alguien también.
fuente
En mi opinión, una de las formas más hermosas (ya que ahora está comúnmente disponible) es mediante el uso de comportamientos.
Requiere:
Microsoft.Xaml.Behaviors.Wpfcódigo xaml:
Y
código de comportamiento:
fuente