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)
你在处理'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)