Разница между Label и TextBlock - PullRequest
118 голосов
/ 21 марта 2011

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

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

Ответы [ 4 ]

192 голосов
/ 22 марта 2011

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

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

  1. Получить пользовательский шаблон элемента управления (через свойство Template).
  2. Отображение данных, отличных от просто строки (через свойство Content).
  3. Применить DataTemplate к его содержимому (через свойство ContentTemplate).
  4. Делайте все, что может ContentControl, что FrameworkElement не может.

    • Label текст отображается серым цветом при отключении
    • Label поддерживает ключи доступа
    • Label намного тяжелее TextBlock

Источник

Некоторые более интересные чтения ниже

24 голосов
/ 21 марта 2011

Label - это ContentControl, что означает, что вы можете установить для него что угодно. Абсолютно все, включая строки, числа, даты, другие элементы управления, изображения, формы и т. Д. TextBlock может обрабатывать только strings.

23 голосов
/ 21 марта 2011

Метки обычно поддерживают однострочный вывод текста, тогда как TextBlock предназначен для многострочного отображения текста.

Например, в wpf TextBlock имеет свойство TextWrapping, которое разрешает многострочный ввод;Этикетка не имеет этого.

8 голосов
/ 04 декабря 2015

Хотя TextBlock и Label используются для отображения текста, они совершенно разные под обложками.

=> Метка наследуется от ContentControl , базового класса, который позволяет отображать практически любой пользовательский интерфейс.

=> TextBlock , с другой стороны, наследуется непосредственно от FrameworkElement , таким образом упуская поведение, общее для всех элементов, наследуемых от Control. Малая иерархия наследования TextBlock делает элемент управления более легким, чем Label, и лучше подходит для более простых неинтерактивных сценариев.

PS: Однако, если вы хотите, чтобы клавиши доступа работали, или вам нужен более гибкий или графический дизайн, вам нужно будет использовать Label.

...