(轉)區別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/)