TextBlock中的C#超链接:当我点击它时没有任何反应

Nic*_*oul 17 c# wpf textblock hyperlink navigateuri

在我的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);
Run Code Online (Sandbox Code Playgroud)

链接显示正确.

当我将鼠标移到它上面时,链接变为红色.

问题:当我点击它时,没有任何反应.

我忘记了什么吗?我是否需要实现某种方法才能真正打开链接?

mar*_*etz 25

您需要处理超链接的RequestNavigate事件.这是一个快速的方法:

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


Sim*_*mon 6

你在处理'Hyperlink.RequestNavigate'事件吗?当用户在WPF窗口中单击超链接时,它不会自动打开具有其NavigateUri属性中指定的URI的浏览器.

在您的代码隐藏中,您可以执行以下操作:

link.RequestNavigate += LinkOnRequestNavigate;

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

  • WPF 超链接几乎没有用。我希望它使用 xaml 中设置的 url 来启动 URL,否则为什么我不只在我的视图视图模型中使用标签和按钮。 (2认同)