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

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

когда я перемещаю по нему мышь, Ссылка становится красной.

проблема: когда я нажимаю на него, ничего не происходит.

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

2 ответов


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

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

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

в ваш код позади вы можете сделать что-то вроде:

link.RequestNavigate += LinkOnRequestNavigate;

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