Разница между Label и TextBlock
В соответствии с Разработка приложений Windows с Microsoft.NET 4 70-511 Учебный комплект
В чем разница между элементом управления Label
и TextBlock
, поскольку оба являются элементами управления содержимым и просто отображают текст?
Ответы
Ответ 1
TextBlock не является элементом управления
Даже если TextBlock
в пространстве имен System.Windows.Controls, он не является элементом управления. Это происходит непосредственно от FrameworkElement
. Метка, с другой стороны, происходит от ContentControl
. Это означает, что Label
может:
- Получать пользовательский шаблон управления (через свойство
Template
). - Отображать данные, отличные от просто строки (через свойство
Content
). - Примените
DataTemplate
к его содержимому (через свойство ContentTemplate
). -
Делайте то, что еще может сделать ContentControl
, чего не может FrameworkElement
.
- Текст
Label
отображается серым цветом при отключении -
Label
поддерживает ключи доступа -
Label
намного тяжелее, чем TextBlock
Источник
Некоторые более интересные читает ниже
Ответ 2
Label
- ContentControl
, что означает, что вы можете установить что-либо в качестве контента для него. Абсолютно все, включая строки, цифры, даты, другие элементы управления, изображения, фигуры и т.д. TextBlock
может обрабатывать только strings
.
Ответ 3
Ярлыки обычно поддерживают однострочный текст, а TextBlock предназначен для многострочного текстового отображения.
Например, в wpf TextBlock имеет свойство TextWrapping
, которое позволяет использовать многострочный вход; Ярлык этого не имеет.
Ответ 4
Хотя TextBlock и Label используются для отображения текста, они отличаются друг от друга под обложками.
= > Ярлык наследует от ContentControl, базового класса, который
позволяет отображать практически любой пользовательский интерфейс.
= > TextBlock, с другой стороны, наследует напрямую от FrameworkElement, тем самым упуская из вида поведение, которое является общим для всех элементов, наследующих от Control.
Неглубокая иерархия наследования TextBlock делает вес управления более легким, чем Label, и лучше подходит для более простых, неинтерактивных сценариев.
PS: Если вы хотите, чтобы ключи доступа работали или хотите более гибкий или графический дизайн, вам нужно использовать Label.