С# Гиперссылка в 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);

Ссылка отображается правильно.

Когда я нажимаю на него курсор, ссылка становится красной.

ПРОБЛЕМА: Когда я нажимаю на нее, ничего не происходит.

Я что-то забыл? Нужно ли мне реализовать какой-то метод, чтобы действительно открыть ссылку?

Ответ 1

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

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

Ответ 2

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

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

link.RequestNavigate += LinkOnRequestNavigate;

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