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

Posted

技术标签:

【中文标题】通过绑定动态创建的带有可点击链接的文本【英文标题】:Dynamically created text with clickable links in it via binding 【发布时间】:2011-04-30 15:26:04 【问题描述】:

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

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

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

提前谢谢

斯文

【问题讨论】:

【参考方案1】:

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

使用 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"> ....

【讨论】:

以上是关于通过绑定动态创建的带有可点击链接的文本的主要内容,如果未能解决你的问题,请参考以下文章

点击后通过 JavaScript 动态创建 jQuery Mobile 页面

DLL动态链接库如何共享数据和如何创建纯资源DLL

根据文本输入字段创建动态链接

动态文本视图在带遥控器的 Android 电视中不可选择和可点击

DLL动态链接库的创建与使用

jQuery动态创建的元素为啥不能绑定事件