В чем разница между элементом WPF TextBlock и элементом управления Label?

Визуально оба следующих фрагмента создают один и тот же пользовательский интерфейс. Итак, почему есть 2 элемента управления.
Snippet1

<TextBlock>Name:</TextBlock>
<TextBox Name="nameTextBox" />

Snippet2

<Label>Name:</Label>
<TextBox Name="nameTextBox" />

(Ну, я собираюсь ответить на это сам... подумал, что это полезный лакомый кусочек, который я узнал сегодня из Программирование WPF)

Ответ 1

Текстовый блок WPF наследует от FrameworkElement вместо того, чтобы выводить из System.Windows.Control как элемент управления метками. Это означает, что Textblock намного более легкий. Недостатком использования текстового блока является отсутствие поддержки ключей доступа /Accerelator, и в качестве цели нет ссылки на другие элементы управления.

Если вы хотите самим отображать текст, используйте TextBlock. Преимущество - легкий, эффективный способ отображения текста.

Если вы хотите связать текст с другим элементом управления, например TextBox, используйте элемент управления Label. Преимущества - это ключи доступа и ссылки на целевое управление.

Ответ 2

Ярлык имеет важную привязку фокуса. Его цель - предоставить вам надпись с ключом доступа. Он имеет свойство Target, которое указывает цель ключа доступа. Как это...

<Label Target="{Binding ElementName=nameTextBox}">_Name:</Label>
<TextBox x:Name="nameTextBox" />

В отсутствие свойства Target элемент управления Label ничего не полезен. Вы услышите звуковой сигнал, если вы нажмете клавишу доступа, указывающую "невозможно обработать запрос"

Ответ 3

Две самые большие причины для путаницы в отношении текстовых блоков и ярлыков - это Windows Forms и здравый смысл.

  • Если вы хотите пощекотать небольшой бит текста в форме в Windows Forms, вы использовали метку, поэтому следует (неправильно), что вы будете делать то же самое с ярлыком WPF.

  • Здравый смысл заставит вас поверить, что ярлык является легким, а TextBlock - нет, когда противоположное верно.

Обратите внимание, что вы можете поместить TextBlock внутри метки.

Ответ 4

С TextBlock мы можем легко поддерживать многострочную поддержку, полагая - используя TextWrapping.

Использование Label в таких случаях, например. отображая сообщение проверки, нужно использовать теги <AccessKey>, которые менее прямолинейны, чем TextBlock.

С другой стороны, использование TextBlock не позволяет нам установить свойство BorderBrush.

Итак, для меня два элемента управления должны быть объединены в элемент управления с полнотекстовым доступом.

Ответ 5

Ярлык принимает все виды ввода данных, такие как String, Number и т.д.... TextBlock, как следует из названия, принимает только текстовую строку.

Ответ 6

Ярлык может использоваться как альтернатива TextBlock для ситуаций, когда требуется минимальная поддержка текста, такая как метка для элемента управления. Использование Label может быть выгодным, потому что оно требует еще меньше ресурсов (более легкий вес), а затем TextBlock.