Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 通过绑定动态创建包含可单击链接的文本_Wpf_Listview_Binding_Hyperlink - Fatal编程技术网

Wpf 通过绑定动态创建包含可单击链接的文本

Wpf 通过绑定动态创建包含可单击链接的文本,wpf,listview,binding,hyperlink,Wpf,Listview,Binding,Hyperlink,我确实想创建一个listview,它由一个自己类的许多项组成。其中一个属性是可以包含一个或多个链接的文本。通常我使用一个文本块和一个文本绑定来显示这个内容 现在我确实希望这些文本被解析为链接,然后动态地使这些链接可点击。我发现了一些代码,比如关于如何创建带有超链接的textblock的代码,这样我就可以了——但是WPF绑定在Text属性上是可用的,所以这最终对我没有帮助 那么,有没有一种方法可以绑定listview中的项目列表(ObservableCollection或类似项目),使其在文本中具

我确实想创建一个listview,它由一个自己类的许多项组成。其中一个属性是可以包含一个或多个链接的文本。通常我使用一个文本块和一个文本绑定来显示这个内容

现在我确实希望这些文本被解析为链接,然后动态地使这些链接可点击。我发现了一些代码,比如关于如何创建带有超链接的textblock的代码,这样我就可以了——但是WPF绑定在Text属性上是可用的,所以这最终对我没有帮助

那么,有没有一种方法可以绑定listview中的项目列表(ObservableCollection或类似项目),使其在文本中具有可单击的链接呢

提前Thx


Sven

我有一个简单的解决方案

使用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}" />
公共类链接项
{
公共字符串文本{get;set;}
公共字符串超链接{get;set;}
公共链接项(字符串文本、字符串超链接)
{
文本=文本;
超链接=超链接;
}
}
//XAML数据模板
//列表框定义
又好又简单。只需在LinkItems集合中添加一堆LinkItem,您将在列表框中获得文本和超链接的良好组合

您还可以在LinkItem类中加入一个命令,使事情变得更有趣,并将该命令绑定到超链接

<Hyperlink Command="{Binding HyperlinkCommand}"> ....
。。。。