【问题标题】:c# - itemsource text to hyperlinkc# - itemsource 文本到超链接
【发布时间】:2019-01-21 15:08:12
【问题描述】:

我有一个我想创建超链接的链接列表,锚标记不起作用。还有另一种方法可以将字符串转换为链接吗?我正在使用 <ItemsControl> 绑定到 LinkList.Link

这是我尝试过的:

for (int i = 0; i < this.LinkList.Link.Count; i++)
{
    var link = this.LinkList.Link[i];
    this.LinkList.Link[i] = "<a href=\"" + link + "\">" + link + "</a>";
           //String.Format("<a href=\"{0}\">{0}</a>", link );
}

两者(在评论中)都不起作用。我提到了这个:Modify List<string> to convert contents to hyperlinks

【问题讨论】:

  • 那么,究竟是什么不起作用?您如何向用户展示这些链接?
  • @Stefan 它正在显示 link 这样,应该能够单击它作为超链接并转到 Internet 浏览器
  • 我们需要了解您如何使用这些链接。如果没有这些信息,我们将无能为力
  • 你想做什么?如果您想在程序窗口中直接将这些 URL 字符串显示为可单击的超链接并允许用户单击它,以下答案将对您有所帮助,但请记住将其标记为答案。如果需要输出为HTML,看来你应该提供更多有用的信息......还有:How to Ask

标签: c# wpf xaml


【解决方案1】:

如何在ItemsControl的ItemTemplate中使用超链接如下:

    <ItemsControl ItemsSource="{Binding LinkList}">
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <TextBlock>
                    <Hyperlink NavigateUri="{Binding Link}" RequestNavigate="Hyperlink_RequestNavigate">
                        <TextBlock Text="{Binding Link}" />
                    </Hyperlink>
                </TextBlock>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>

如你所见,在超链接上还有一个事件“RequestNavigate”,在后面的代码中有一个处理程序,如下:

   private void Hyperlink_RequestNavigate(object sender, RequestNavigateEventArgs e)
   {
        System.Diagnostics.Process.Start(e.Uri.AbsoluteUri);
        e.Handled = true;
   }

当然,您也可以绑定超链接的命令以使用 MVVM 模式进行导航。

希望对您有所帮助。

【讨论】:

    【解决方案2】:
    <ListBox ItemsSource="{Binding LinkList, Mode=OneWay}">
     <ListBox.ItemTemplate>
        <DataTemplate>                     
           <Hyperlink NavigateUri="{Binding Link}">
             Link Text
            </Hyperlink>
        </DataTemplate>
     </ListBox.ItemTemplate>
    </ListBox>
    

    您可能需要将 XAML 模板作为绑定到 url 的超链接。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-01-11
      • 1970-01-01
      • 2011-08-22
      • 1970-01-01
      • 1970-01-01
      • 2011-01-06
      • 2017-07-23
      相关资源
      最近更新 更多