通过绑定动态创建带有可点击链接的文本

时间:2010-10-26 09:00:41

标签: wpf listview binding hyperlink

我确实想要创建一个列表视图,其中包含许多自己类的项目。其中一个属性是一个文本,其中可以包含一个或多个链接。通常我使用带有文本绑定的文本块来显示此内容。

现在我确实希望将这些文本解析为链接,然后动态地使这些链接可以点击。我发现了一些像Add hyperlink to textblock wpf这样的代码,关于如何使用超链接创建一个文本块,所以我会没事的 - 但是WPF绑定在Text属性上可用,所以这对我最终没有帮助。

那么有没有办法在列表视图中绑定项目列表(ObservableCollection或类似项目)以在文本中包含可点击链接?

提前谢谢

斯文

1 个答案:

答案 0 :(得分:3)

我有一个简单的解决方案。

使用DataTemplate,您可以为类指定模板,例如包含文本的LinkItem和超链接。

public class LinkItem
{
    public string Text { get; set; }
    public string Hyperlink { get; set; }

    public LinkItem(string text, string hyperlink)
    {
        Text = text;
        Hyperlink = hyperlink;
    }
}

// XAML Data template
<DataTemplate DataType="{x:Type HyperlinkDemo:LinkItem}">
    <TextBlock>
        <TextBlock Text="{Binding Text}" Margin="1" />
        <Hyperlink>
            <TextBlock Text="{Binding Hyperlink}" Margin="1" />
        </Hyperlink>
    </TextBlock>
</DataTemplate>

// List box definition
<ListBox ItemsSource="{Binding LinkItems}" />

美好而简单。只需将一堆LinkItem添加到您的LinkItems集合中,您就可以在列表框中获得一些不错的文本和超链接。

您还可以在LinkItem类中输入一个命令,使事情更有趣,并将命令绑​​定到超链接。

<Hyperlink Command="{Binding HyperlinkCommand}"> ....