2010-10-26 23 views
3

我確實想創建一個由多個自己類的項目組成的列表視圖。其中一個屬性是可以包含一個或多個鏈接的文本。通常情況下,我使用帶有文本綁定的文本塊來顯示此內容。通過綁定動態創建帶有可點擊鏈接的文本

現在我想讓這些文本解析爲鏈接,然後動態地使這些鏈接可點擊。我發現很多代碼如Add hyperlink to textblock wpf關於如何創建帶有超鏈接的文本塊,所以我會很好 - 但WPF綁定在Text屬性中可用,所以這最終不會幫助我。

那麼有沒有一種方法來綁定列表視圖中的項目列表(ObservableCollection或類似)在文本中有可點擊的鏈接?提前

斯文

回答

3

THX我有一個簡單的解決方案。

使用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}"> ....