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/

最新文章

  1. ASP.NET MVC 从零开始 - Web.config
  2. #define用法解析
  3. Xcode 6制作动态及静态Framework
  4. Python网络爬虫Scrapy框架研究
  5. Understanding G1 GC Logs--转载
  6. mysql ---复制表结构---创建新表
  7. php和.net的DES加密解密方法
  8. nodejs中EventEmitter
  9. zf-关于通知公告显示问题
  10. iOS下JS与OC互相调用(六)--WKWebView + WebViewJavascriptBridge
  11. Chrome开发者工具面板
  12. Linux环境下虚拟环境virtualenv安装和使用
  13. Centos7上配置网络和本地yum方法
  14. Windows 下面 winrar 压缩简单记录
  15. 实战:mysql统计指定架构的全部表的数据和索引大小情况-v2
  16. 并发系列(一)-----synchronized关键字
  17. django之创建第8-2个项目-数据库数据提取之过滤操作符相关
  18. 音视频学习系列第(五)篇---MediaRecorder的使用
  19. 【[CQOI2015]选数】
  20. Windows和Linux系统如何退出python命令行

热门文章

  1. java BufferSegment
  2. 二.通过jenkins对系统的监控(1)
  3. django 里面的更新数据(update)
  4. 数据分析系列篇:玩转excel
  5. windows下Docker安装MySQL
  6. vue组件级路由钩子函数(beforeRouteEnter/beforeRouteUpdate/beforeRouteLeave)
  7. java漏洞历史
  8. display: flex属性介绍
  9. JAVA学习,边学习边总结边记录
  10. secureCRT 如何上传下载文件