C#-ItemSource文本到超链接

时间:2018-08-14 17:27:50

标签: c# wpf xaml

我有一个要链接到超链接的链接列表,锚标记不起作用。还有另一种方法可以将字符串转换为链接吗?我正在使用<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

2 个答案:

答案 0 :(得分: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模式进行导航。

希望有帮助。

答案 1 :(得分:0)

<ListBox ItemsSource="{Binding LinkList, Mode=OneWay}">
 <ListBox.ItemTemplate>
    <DataTemplate>                     
       <Hyperlink NavigateUri="{Binding Link}">
         Link Text
        </Hyperlink>
    </DataTemplate>
 </ListBox.ItemTemplate>
</ListBox>

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