Différence entre Label et TextBlock

Selon le kit de formation Windows Applications Development avec Microsoft .NET 4 70-511

Quelle est la différence entre le contrôle Label et le contrôle TextBlock car les deux sont des contrôles de contenu et affichent simplement du texte?

TextBlock n’est pas un contrôle

Même si TextBlock réside dans l’espace de noms System.Windows.Controls, il ne s’agit pas d’un contrôle. Il dérive directement de FrameworkElement . Label, d’autre part, dérive de ContentControl . Cela signifie que Label peut:

  1. Être donné un modèle de contrôle personnalisé (via la propriété Template ).
  2. Afficher des données autres qu’une chaîne (via la propriété Content ).
  3. Appliquez un DataTemplate à son contenu (via la propriété ContentTemplate ).
  4. Faites tout ce qu’un ContentControl peut faire, ce qu’un FrameworkElement ne peut pas faire.

    • Label texte de l’ Label est grisé lorsqu’il est désactivé
    • Label prend en charge les clés d’access
    • Label est beaucoup plus lourd que TextBlock

La source

Quelques lectures plus intéressantes ci-dessous

Label est ContentControl ce qui signifie que vous pouvez définir n’importe quoi comme contenu. Absolument tout, y compris les chaînes, les nombres, les dates, les autres contrôles, les images, les formes, etc. TextBlock ne peut gérer que des ssortingngs .

Les étiquettes prennent généralement en charge la sortie de texte sur une seule ligne alors que TextBlock est destiné à l’affichage de texte multiligne.

Par exemple, dans wpf, TextBlock a une propriété TextWrapping qui permet des entrées multilignes; Label ne l’a pas.

Bien que TextBlock et Label soient tous deux utilisés pour afficher du texte, ils sont très différents sous les couvertures.

=> Label hérite de ContentControl , une classe de base qui permet l’affichage de presque toutes les interfaces utilisateur imaginables.

=> TextBlock , en revanche, hérite directement de FrameworkElement , manquant ainsi le comportement commun à tous les éléments héritant de Control. La hiérarchie d’inheritance peu profonde de TextBlock rend le contrôle plus léger que Label et convient mieux aux scénarios simples et non interactifs.

PS: Cependant, si vous souhaitez que les clés d’access fonctionnent ou que vous souhaitiez une conception plus flexible ou graphique, vous devez utiliser Label.