1. 程式人生 > >WPF中動態更新TextBlock文字中的超連結

WPF中動態更新TextBlock文字中的超連結

    在寫小軟體的時候突然用到需要對顯示的文字動態更新,然後裡面還有超連結,在普通的winform裡面好

像有Linklabel,但是wpf中沒找到,反正看到有Textblock裡新增超連結的例子,就嘗試的改了下,但是對於

超連結的更新始終沒找到好方法,偶然翻著MSDN找到了自己需要的例子,現在就記錄下來方便自己以後檢視

了!
    下面介紹在wpf工程中,首先通過XAML新增TextBlock控制元件以及超連結,而後在控制程式中動態更新文字

和超連結內容,遺憾是還沒有達到動態的增加超連結個數,沒有去嘗試,應該也是可以的。
    (1)通過XAML新增TextBlock控制元件以及超連結
     wpf窗體中的Grid容器中給TextBlock劃分出位置,然後拖入控制元件,下面是摘出的程式碼
<TextBlock Name="navigateTextBlock" Margin="14,0,0,5" Grid.Row="1"     TextWrapping="Wrap"

Foreground="Yellow">    
         <Hyperlink Name="hyperlink0" Click="hyperlink0_Click"   NavigateUri="

http://www.qq.com" Foreground="Yellow"> 超連結www.qq.com</Hyperlink>
         <LineBreak ></LineBreak>
</TextBlock>
    這樣在窗體中顯示“超連結www.qq.com”,指向的地址www.qq.com。至於顏色和分隔線就沒必要說了。
    (2)在控制程式中動態更新文字和超連結內容
    在控制程式中動態更新文字很簡單,navigateTextBlock.Text="",就可以設定所需要的文字了;就是動

態更新超連結有點麻煩,但是隻要你熟悉Hyperlink類,也是很簡單的。在MSDN中對於Hyperlink 類有如下的

示例程式碼:
Paragraph parx = new Paragraph();
Run run1 = new Run("Text preceeding the hyperlink.");
Run run2 = new Run("Text following the hyperlink.");
Run run3 = new Run("Link Text.");

Hyperlink hyperl = new Hyperlink(run3);
hyperl.NavigateUri = new Uri("

http://search.msn.com");

parx.Inlines.Add(run1);
parx.Inlines.Add(hyperl);
parx.Inlines.Add(run2);
可以看到對該類的使用,因此按照這種方式可以對TextBlock中的Hyperlink物件進行修改更新,如下
            Run runTextTemp=new Run (text );
            hpHost.Inlines.Clear();
            hpHost.Inlines.Add(runTextTemp);
            hpHost.NavigateUri = new Uri(hplink);
    寫完了發現真的很簡單,可是自己對這些都不太熟悉,第一次用都是現找,現學現用。其實最初自己只

是想直接通過Frame類來顯示網頁的,後來因為自己採用的可變窗體,導致網頁不能正常顯示,因此只好自己

提取出文字和超連結進行顯示了。