通过绑定动态创建的带有可点击链接的文本
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 页面