What is the difference between the WPF TextBlock element and Label control?

Viewed 65248

Visually both of the following snippets produce the same UI. So why are there 2 controls..
Snippet1

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

Snippet2

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

(Well I am gonna answer this myself... thought this is a useful tidbit I learnt today from Programming WPF)

6 Answers

The WPF Textblock inherits from FrameworkElement instead of deriving from System.Windows.Control like the Label Control. This means that the Textblock is much more lightweight. The downside of using a textblock is no support for Access/Accerelator Keys and there is no link to other controls as target.

When you want to display text by itself use the TextBlock. The benefit is a light, performant way to display text.

When you want to associate text with another control like a TextBox use the Label control. The benefits are access keys and references to target control.

Label has an important focus handling responsibility.Its purpose is to allow you to place a caption with an access key. It has a Target property, which indicates the target of the access key. Like this...

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

In the absence of the Target property, the Label control does nothing useful. You'll just hear a beep if you press the access key indicating 'unable to process request'

Label can be used as an alternative to TextBlock for situations where minimal text support is required such as the label for a control. Using Label can be advantageous because it requires even less resources (lighter weight) then a TextBlock.

Related