2012-10-05 10 views
12

Nella mia applicazione standalone C#, voglio consentire agli utenti di fare clic su un collegamento che avvia il browser preferito.C# Collegamento ipertestuale in TextBlock: non accade nulla quando faccio clic su di esso

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); 

Il collegamento è visualizzato correttamente.

Quando si sposta il mouse su di esso, il collegamento diventa rosso.

PROBLEMA: quando faccio clic, non succede nulla.

Ho dimenticato qualcosa? Devo implementare un qualche tipo di metodo per consentire veramente l'apertura del collegamento?

+0

hai aggiunto gestore di eventi per l'evento link.Click? –

+0

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

+0

@Dennis: Direi che è un duplicato borderline: imposta il gestore del codice dietro XAML. – markmuetz

risposta

17

È necessario gestire l'evento RequestNavigate del collegamento ipertestuale. Ecco un modo rapido per farlo:

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

Stai gestendo l'evento "Hyperlink.RequestNavigate"? Quando un utente fa clic su un collegamento ipertestuale in una finestra WPF, non apre automaticamente un browser con l'URI specificato nella relativa proprietà NavigateUri.

Nel codice-dietro si può fare qualcosa di simile:

link.RequestNavigate += LinkOnRequestNavigate; 

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