1. 程式人生 > >(轉)區別TextBlock和Label

(轉)區別TextBlock和Label

TextBlock和Label都是用來顯示少量資料的。好多文章對Label存在的描述都是它允許使用"快速獲取"。"快速獲取"就是允許你用Alt加上其它的按鍵快速和UI介面的某個控制元件互動,比如你可以用ALT加上O鍵來點選一個OK按鈕。

TextBlock直接繼承於FrameworkElement,而Label繼承於ContentControl。這樣看來,Label可以做這樣的事情:

1.可以定義一個控制元件模板(通過Template屬性)

2.可以顯示出string以外的其他資訊(通過Content屬性)

3.為Label內容新增一個DataItemplate(通過ContentTemplate屬性)

4.做一些FrameworkElement元素不能做的事情

下邊是一個TextBlock和Label的繼承關係圖

當Label不可用的時候它的Text顯示為灰色,但是TextBlock不會

上例中UserName為TextBlock,Password為Label。

當Label禁用時候它的Content變為灰色的原因是因為Label的預設模板中有一個觸發器,當 Label禁用的時候它會設定Content的顏色。

如果要改變Label禁用時的樣式可以在這改變。

Label比TextBlock更加複雜

以上說了Label相當於TextBlock的優勢,下面說一下TextBlock的優勢

載入Label時比TextBlock需要耗費更多的時間,不僅僅是Label相對於直接繼承於FrameElement的TextBlock有了更多層次的繼承,它的visual tree更加複雜。

下面的圖片告訴你是當你建立一個Label的時候後臺都做了什麼事情。

 

TextBlock的visual tree不包含任何子元素,而Label卻複雜的多。它有一個border屬性,最後通過一個TextBlock來顯示內容。這樣看來label其實就是一個個性化的TextBlock。。

(原文http://joshsmithonwpf.wordpress.com/2007/07/04/differences-between-label-and-textblock/

轉自:
區別TextBlock和Label
http://joshsmithonwpf.wordpress.com/2007/07/04/differences-between-label-and-textblock/

TextBlock和Label都是用來顯示少量資料的。好多文章對Label存在的描述都是它允許使用"快速獲取"。"快速獲取"就是允許你用Alt加上其它的按鍵快速和UI介面的某個控制元件互動,比如你可以用ALT加上O鍵來點選一個OK按鈕。

TextBlock直接繼承於FrameworkElement,而Label繼承於ContentControl。這樣看來,Label可以做這樣的事情:

1.可以定義一個控制元件模板(通過Template屬性)

2.可以顯示出string以外的其他資訊(通過Content屬性)

3.為Label內容新增一個DataItemplate(通過ContentTemplate屬性)

4.做一些FrameworkElement元素不能做的事情

下邊是一個TextBlock和Label的繼承關係圖

當Label不可用的時候它的Text顯示為灰色,但是TextBlock不會

上例中UserName為TextBlock,Password為Label。

當Label禁用時候它的Content變為灰色的原因是因為Label的預設模板中有一個觸發器,當 Label禁用的時候它會設定Content的顏色。

如果要改變Label禁用時的樣式可以在這改變。

Label比TextBlock更加複雜

以上說了Label相當於TextBlock的優勢,下面說一下TextBlock的優勢

載入Label時比TextBlock需要耗費更多的時間,不僅僅是Label相對於直接繼承於FrameElement的TextBlock有了更多層次的繼承,它的visual tree更加複雜。

下面的圖片告訴你是當你建立一個Label的時候後臺都做了什麼事情。

 

TextBlock的visual tree不包含任何子元素,而Label卻複雜的多。它有一個border屬性,最後通過一個TextBlock來顯示內容。這樣看來label其實就是一個個性化的TextBlock。。

(原文http://joshsmithonwpf.wordpress.com/2007/07/04/differences-between-label-and-textblock/