【问题标题】: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 或类似的)以在文本中具有可点击的链接?
提前谢谢
斯文
【问题讨论】:
标签:
wpf
listview
binding
hyperlink
【解决方案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}"> ....