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("
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類來顯示網頁的,後來因為自己採用的可變窗體,導致網頁不能正常顯示,因此只好自己
提取出文字和超連結進行顯示了。