2012-10-05 2 views
12

В моем автономном приложении C# я хочу, чтобы пользователи нажимали на ссылку, которая запускает их любимый браузер.C# Гиперссылка в TextBlock: ничего не происходит, когда я нажимаю на нее

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

@Dennis: Я бы сказал, что это пограничный дубликат: он устанавливает обработчик в коде, а не XAML. – markmuetz

ответ

17

Вам необходимо обработать событие RequestNavigate гиперссылки. Вот быстрый способ сделать это:

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

Вы обрабатываете событие «Hyperlink.RequestNavigate»? Когда пользователь нажимает гиперссылку в окне WPF, он автоматически не открывает браузер с URI, указанным в свойстве NavigateUri.

В коде, за что вы можете сделать что-то вроде:

link.RequestNavigate += LinkOnRequestNavigate; 

private void LinkOnRequestNavigate(object sender, RequestNavigateEventArgs e) 
{ 
    System.Diagnostics.Process.Start(e.Uri.ToString()); 
} 
Смежные вопросы