He visto varias sugerencias, que puede agregar un hipervínculo a la aplicación WPF a través del Hyperlink
control.
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?
RequestNavigateEventArgs
está en elSystem.Windows.Navigation
espacio de nombres.Process
yProcessStartInfo
ambos están en elSystem.Diagnostics
espacio 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
Hyperlink
no es un control, es un elemento de contenido de flujo , solo puede usarlo en controles que admitan contenido de flujo, como aTextBlock
.TextBoxes
solo 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
Hyperlink
no 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
UseShellExecute
atrue
.Esto se menciona en los documentos de Microsoft :
Entonces, para que esto funcione, debe agregar
UseShellExecute
atrue
:fuente
UseShelExecute = true
alguna 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.Wpf
código xaml:
Y
código de comportamiento:
fuente