[Windows Phone 8.0/8.1 Silverlight]_擴展TextBlock的最大顯示字數

[Windows Phone 8.0/8.1 Silverlight]_擴展TextBlock的最大顯示字數

當在TextBlock放置相當多的文字(或者換行)時,搭配ScrollViewer是在正常不過的設計方式。

 

但是今天遇到一個問題,就是當你放在TextBlock裡面的字元實在太多,導致該TextBlock顯示的區域過大時

 

這時會發生下圖的狀況:

 

2014-08-01_19-20-32

 

也就是下半部就這樣被卡掉了,但繼續滑可以發現在scrollviewer其實有被裡面的textblock高度撐開,但是因為沒顯示的關係所以看不到。

 

對這個問題,有一個解釋是說微軟避免一次渲染過大面積的畫面在螢幕上,而導致效能不彰的問題產生,

所以只要任一有顯示畫面產生的UI控制項,單一元件渲染最大的面積為2048x2048 pixel,因此會產生上圖的問題,

但是不包含Grid跟StackPanle, scrollviewer等看不見的,簡單來說就是範圍是沒有限制大小,但渲染的面積是有的。

 

幸好這個問題早在WP7時期就有微軟的人提出解決辦法,

Alex Yakhnin-MSFT's project:
http://blogs.msdn.com/b/priozersk/archive/2010/09/08/creating-scrollable-textblock-for-wp7.aspx

 

 

 

從文章內可得知原來是透過幾個迂迴的手法,把過長無法顯示的文字給分段處理後顯示

至於原文的SAMPLE CODE LINK已經失效,下午找了找,就從別人的PROJECT(https://github.com/lihaosky/Douban_Movie/tree/master/Phone.Controls)

把這個專案給挖出來測試,是沒問題可以正常WORK的!

 

所以我自己包了一下

做了一個簡單的SAMPLE CODE,提供給各位使用:

https://github.com/thkaw/Fix-overlimit-Textblock-Problem