【问题标题】:How to add dynamically created hyperlink to stack panel programmatically wpf如何以编程方式将动态创建的超链接添加到堆栈面板wpf
【发布时间】:2018-11-19 07:15:11
【问题描述】:

我正在创建超链接并希望将其添加到堆栈面板。

for (int i = 1; i <= links.Length; i++)
{
    Hyperlink hyperlink = new Hyperlink()
    {
        NavigateUri = new Uri(links[i - 1])
    };
}
hyperlink.RequestNavigate += new System.Windows.Navigation.RequestNavigateEventHandler(this.Hyperlink_RequestNavigate);
mainControl.Children.Add(hyperlink);

它给了我错误 -

无法将 system.windows.documents.hyperlink 转换为 system.windows.uielement。

我了解命名空间错误,但没有找到解决方法,因为在 uielement 中我找不到超链接。

【问题讨论】:

  • 这是winforms还是wpf?
  • 此应用程序在 wpf 中
  • 那么为什么在广阔的体育世界中你要标记winforms?

标签: c# .net wpf


【解决方案1】:

使用 LinkLabel 代替超链接

样品:

using System;
using System.Drawing;
using System.Windows.Forms;

public class LinkLabelAddLink : Form {
    LinkLabel lnkLA = new LinkLabel();

  public LinkLabelAddLink(){
    Size = new Size(300,250);

    lnkLA.Parent = this;
    lnkLA.Text = "StackOverflow.com";
    lnkLA.Location = new Point(0,25);
    lnkLA.AutoSize = true;
    lnkLA.BorderStyle = BorderStyle.None;
    lnkLA.Links.Add(0,7,"www.stackoverflow.com");
    lnkLA.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(lnkLA_LinkClicked);
  }

  static void Main() 
  {
    Application.Run(new LinkLabelAddLink());
  }
  private void lnkLA_LinkClicked(object sender,LinkLabelLinkClickedEventArgs e)
  {
      lnkLA.LinkVisited = true;
       System.Diagnostics.Process.Start(e.Link.LinkData.ToString());
  }
}

PS:您至少需要 .NET 4.5

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-19
    • 2011-12-21
    • 2016-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多