2012-10-05 37 views
12

Trong ứng dụng độc lập C# của tôi, tôi muốn cho phép người dùng nhấp vào liên kết sẽ khởi chạy trình duyệt yêu thích của họ.C# Siêu liên kết trong TextBlock: không có gì xảy ra khi tôi nhấp vào nó

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

Liên kết được hiển thị chính xác.

Khi tôi di chuyển chuột lên đó, liên kết sẽ chuyển sang màu đỏ.

VẤN ĐỀ: Khi tôi nhấp vào, không có gì xảy ra.

Tôi đã quên gì đó chưa? Tôi có cần phải thực hiện một số loại phương pháp để thực sự để cho các liên kết được mở ra?

+0

bạn đã thêm xử lý sự kiện cho sự kiện link.Click? –

+0

Có thể trùng lặp: http://stackoverflow.com/questions/10238694/example-using-hyperlink-in-wpf – Dennis

+0

@ Dennis: Tôi muốn nói đó là một bản sao đường biên: nó thiết lập trình xử lý ở mã phía sau không phải XAML. – markmuetz

Trả lời

17

Bạn cần xử lý sự kiện RequestNavigate của siêu liên kết. Dưới đây là cách thực hiện nhanh:

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

Bạn có đang xử lý sự kiện 'Siêu kết nối.RequestNavigate' không? Khi người dùng nhấp vào một Siêu liên kết trong cửa sổ WPF, nó sẽ không tự động mở một trình duyệt với URI được chỉ định trong thuộc tính NavigateUri của nó.

Trong bạn code-behind bạn có thể làm một cái gì đó như:

link.RequestNavigate += LinkOnRequestNavigate; 

private void LinkOnRequestNavigate(object sender, RequestNavigateEventArgs e) 
{ 
    System.Diagnostics.Process.Start(e.Uri.ToString()); 
} 
Các vấn đề liên quan