2012-10-05 16 views
12

En mi aplicación independiente C#, quiero que los usuarios hagan clic en un enlace que inicie su navegador favorito.C# Hipervínculo en TextBlock: no ocurre nada cuando hago clic en él

System.Windows.Controls.TextBlock text = new TextBlock(); 
Run run = new Run("Link Text"); 

Hyperlink link = new Hyperlink(run); 
link.NavigateUri = new Uri("http://w3.org"); 
text.Inlines.Add(link); 

El enlace se visualiza correctamente.

Cuando muevo el mouse sobre él, el enlace se vuelve rojo.

PROBLEMA: Cuando hago clic en él, no pasa nada.

¿Olvidé algo? ¿Debo implementar algún tipo de método para realmente permitir que se abra el enlace?

+0

¿ha agregado controlador de eventos para el evento link.Click? –

+0

Posible duplicado: http://stackoverflow.com/questions/10238694/example-using-hyperlink-in-wpf – Dennis

+0

@Dennis: Diría que es un duplicado en el límite: configura el controlador en el código detrás de XAML. – markmuetz

Respuesta

17

Debe controlar el evento RequestNavigate del hipervínculo. Aquí hay una forma rápida de hacerlo:

link.RequestNavigate += (sender, e) => 
{ 
    System.Diagnostics.Process.Start(e.Uri.ToString()); 
}; 
4

¿Está manejando el evento 'Hyperlink.RequestNavigate'? Cuando un usuario hace clic en un hipervínculo en una ventana de WPF, no abre automáticamente un navegador con el URI especificado en su propiedad NavigateUri.

En su código subyacente puede hacer algo como:

link.RequestNavigate += LinkOnRequestNavigate; 

private void LinkOnRequestNavigate(object sender, RequestNavigateEventArgs e) 
{ 
    System.Diagnostics.Process.Start(e.Uri.ToString()); 
} 
Cuestiones relacionadas