2012-10-05 39 views
12

在我的C#獨立應用程序中,我想讓用戶點擊一個鏈接,啓動他們最喜歡的瀏覽器。TextBlock中的C#超鏈接:點擊它時什麼也沒有發生

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

鏈接顯示正確。

當我將鼠標移到它上面時,鏈接變爲紅色。

問題:當我點擊它時,沒有任何反應。

我忘記了什麼嗎?我是否需要實施某種方法才能真正讓鏈接打開?

+0

你添加事件處理程序link.Click事件? –

+0

可能的重複:http://stackoverflow.com/questions/10238694/example-using-hyperlink-in-wpf – Dennis

+0

@丹尼斯:我會說這是一個邊界重複:它在代碼後面設置處理程序而不是XAML。 – markmuetz

回答

17

您需要處理超鏈接的RequestNavigate事件。這裏有一個快速的方法:

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

你在處理'Hyperlink.RequestNavigate'事件嗎?當用戶在WPF窗口中單擊超鏈接時,它不會自動打開具有其NavigateUri屬性中指定的URI的瀏覽器。

在你的後臺代碼,你可以這樣做:

link.RequestNavigate += LinkOnRequestNavigate; 

private void LinkOnRequestNavigate(object sender, RequestNavigateEventArgs e) 
{ 
    System.Diagnostics.Process.Start(e.Uri.ToString()); 
} 
相關問題