我确实想要创建一个列表视图,其中包含许多自己类的项目。其中一个属性是一个文本,其中可以包含一个或多个链接。通常我使用带有文本绑定的文本块来显示此内容。
现在我确实希望将这些文本解析为链接,然后动态地使这些链接可以点击。我发现了一些像Add hyperlink to textblock wpf这样的代码,关于如何使用超链接创建一个文本块,所以我会没事的 - 但是WPF绑定在Text属性上可用,所以这对我最终没有帮助。
那么有没有办法在列表视图中绑定项目列表(ObservableCollection或类似项目)以在文本中包含可点击链接?
提前谢谢
斯文
答案 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}"> ....