Разница между Label и TextBlock

В соответствии с Разработка приложений Windows с Microsoft.NET 4 70-511 Учебный комплект

В чем разница между элементом управления Label и TextBlock, поскольку оба являются элементами управления содержимым и просто отображают текст?

Ответ 1

TextBlock не является элементом управления

Даже если TextBlock в пространстве имен System.Windows.Controls, он не является элементом управления. Это происходит непосредственно от FrameworkElement. Метка, с другой стороны, происходит от ContentControl. Это означает, что Label может:

  1. Получать пользовательский шаблон управления (через свойство Template).
  2. Отображать данные, отличные от просто строки (через свойство Content).
  3. Примените DataTemplate к его содержимому (через свойство ContentTemplate).
  4. Делайте то, что еще может сделать 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.