102 votes

Quelle est la différence entre l'élément WPF TextBlock et le contrôle Label?

Visuellement, les deux extraits suivants produisent la même interface utilisateur. Alors pourquoi y at-il 2 contrôles ..
Snippet1

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

Snippet2

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

( Eh bien, je vais répondre moi-même ... pensais que c'était une information utile que j'ai apprise aujourd'hui en programmant WPF )

111voto

Alan Le Points 3375

WPF Textblock hérite de FrameworkElement au lieu de dérivation de Système.De Windows.De contrôle comme le Contrôle Label. Cela signifie que le Textblock est beaucoup plus léger. L'inconvénient de l'utilisation d'un textblock est pas prise en charge pour l'Accès/Accerelator Touches et il n'y a pas de lien vers d'autres moyens de contrôle de la cible.

Lorsque vous souhaitez afficher le texte en lui-même utilise le TextBlock. L'avantage est une lumière, performantes moyen pour afficher du texte.

Lorsque vous souhaitez associer du texte à un autre contrôle comme une zone de texte utiliser le Label de contrôle. Les avantages sont les clés d'accès et de références à la cible de contrôle.

20voto

Gishu Points 59012

Label a une responsabilité de manipulation importante. Son objectif est de vous permettre de placer une légende avec une clé d'accès. Il possède une propriété Target , qui indique la cible de la clé d'accès. Comme ça...

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

En l'absence de la propriété Target, le contrôle Label ne sert à rien. Vous entendrez simplement un bip si vous appuyez sur la touche d'accès indiquant «Impossible de traiter la demande».

3voto

Jon Crowell Points 5656

Les deux principales raisons de la confusion à l'égard de TextBlocks et les Étiquettes sont des Formes de Windows et le sens commun.

  1. Lorsque vous avez voulu gifler un petit bout de texte sur votre formulaire dans les Windows Forms, vous avez utilisé une Étiquette, de sorte qu'il suit (à tort) que vous feriez la même chose avec un WPF Étiquette.

  2. De bon sens vous conduire à croire qu'une Étiquette est léger et d'un TextBlock n'est-ce pas, quand le contraire est vrai.

Notez que vous pouvez mettre un TextBlock à l'intérieur d'une Étiquette.

2voto

Nam G VU Points 5954

Avec TextBlock nous pouvons facilement avoir un support multiligne, je suppose - en utilisant TextWrapping .

L'utilisation de Label dans de tels cas, par exemple l'affichage d'un message de validation, nécessite l'utilisation de balises <AccessKey> , ce qui est moins simple que TextBlock .

En revanche, utiliser TextBlock ne nous permet pas de définir la propriété BorderBrush .

Donc, pour moi, les deux contrôles doivent être combinés dans un contrôle text-full-feature.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X