WPF:如何在运行时添加超链接?

3

我需要在程序的表单中动态添加多个超链接,并在运行时处理用户对它们的点击。

如何实现?

我尝试了以下代码:

var hlink = new Hyperlink(); myStackPanel.Children.Add(hlink);

但是Hyperlink不是UIElement...

谢谢!

2个回答

3

这有点笨拙,但你需要这样做:

Label linkLabel = new Label();
Run linkText = new Run("Google");
Hyperlink link = new Hyperlink(linkText);

link.NavigateUri = new Uri("http://www.google.com");

link.RequestNavigate += new RequestNavigateEventHandler(delegate(object sender, RequestNavigateEventArgs e) {
    Process.Start(new ProcessStartInfo(e.Uri.AbsoluteUri));
    e.Handled = true; 
});

linkLabel.Content = link;

myStackPanel.Children.Add(linkLabel);

这将创建一个新标签,其中包含文本“Google”,Uri为“http://www.google.com”,当用户单击时,它将在用户的默认浏览器中打开该Uri。


2
超链接不是UI元素,但您可以将其作为内容添加到Label中。
在Xaml中,它看起来像这样:
<Label>
<Hyperlink Click="btnRemoveAll_Click">Remove all</Hyperlink>
</Label>

你可以像使用按钮的点击事件一样,将它用于许多事情。


跟进 Holli 的回答,你需要按照上述方式创建超链接,为其添加事件处理程序(hlink.Click += new RoutedEventHandler(hLink_Click);),创建一个新的标签,设置 Label.Content = hlink;,然后将其添加到 myStackPanel.Children 中。 - Wonko the Sane

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接