标签和TextBlock之间的区别
根据Windows应用程序开发与Microsoft.NET 4 70-511培训工具包
Label
控件和TextBlock
控件有什么区别,因为它们都是内容控件,只是显示文本?
TextBlock不是一个控件
即使TextBlock
居住在System.Windows.Controls命名空间,它不是一个控件。 它直接从FrameworkElement
派生。 另一方面,标签派生自ContentControl
。 这意味着Label
可以:
- 给定一个自定义控件模板(通过
Template
属性)。 - 显示除了string之外的数据(通过
Content
属性)。 - 将
DataTemplate
应用于其内容(通过ContentTemplate
属性)。 -
做一个
ContentControl
可以做的任何事情,一个FrameworkElement
不能。- 禁用时,
Label
文本呈灰色显示 -
Label
支持访问键 -
Label
比TextBlock
重得多
- 禁用时,
资源
下面有一些更有趣的内容
- http://www.wpfwiki.com/WPF%20Q4.1.ashx
- WPF TextBlock元素和Label控件有什么区别?
Label
是ContentControl
,这意味着你可以设置任何东西作为它的内容。 绝对包括string,数字,date,其他控件,图像,形状等TextBlock
只能处理strings
。
标签通常支持单行文本输出,而TextBlock用于多行文本显示。
例如在WPF TextBlock有一个属性TextWrapping
,它启用多行input; 标签没有这个。
虽然TextBlock和Label都是用来显示文本的,但是它们在封面上是完全不同的。
=> 标签inheritance自ContentControl ,它是一个基类,可以显示几乎任何可以想象的UI。
另一方面, TextBlock直接从FrameworkElementinheritance,因此错过了从Controlinheritance的所有元素的通用行为。 TextBlock的浅inheritance层次使得控件比Label更轻,更适合于更简单的非交互式场景。
PS:但是,如果你想访问键工作或想要更灵活或graphicsdevise,你需要使用标签。