【问题标题】: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}"> ....
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-25
      • 2016-07-31
      • 2016-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多