way two raisepropertychanged property change wpf

two - ¿Cuál es la diferencia entre el elemento WPF TextBlock y el control Label?



wpf binding textbox (6)

Con TextBlock podemos tener soporte para varias líneas, creo, usando TextWrapping .

El uso de Label en tales casos, por ejemplo, mostrar un mensaje de validación, necesita utilizar etiquetas <AccessKey> , lo que es menos directo que TextBlock .

Por otro lado, el uso de TextBlock no nos permite establecer la propiedad BorderBrush .

Entonces, para mí, los dos controles deberían combinarse en un control de texto con todas las funciones.

Esta pregunta ya tiene una respuesta aquí:

Visualmente, los dos fragmentos siguientes producen la misma IU. Entonces, ¿por qué hay 2 controles?
Snippet1

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

Snippet2

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

( Bien, voy a responder esto yo mismo ... pensé que este es un mensaje útil que aprendí hoy de Programming WPF )


El WPF Textblock hereda de FrameworkElement en lugar de derivar de System.Windows.Control como Label Control. Esto significa que el Textblock es mucho más ligero. La desventaja de utilizar un bloque de texto no es compatible con las teclas Acceso / Accerelator y no hay un enlace a otros controles como destino.

Cuando desee mostrar texto por sí mismo, utilice el Bloque de texto . El beneficio es una forma ligera y efectiva de mostrar texto.

Cuando desee asociar texto con otro control como un Cuadro de texto, use el control Etiqueta . Los beneficios son claves de acceso y referencias al control objetivo.


La etiqueta se puede utilizar como una alternativa a TextBlock para situaciones en las que se requiere una compatibilidad mínima con el texto, como la etiqueta de un control. Usar Label puede ser ventajoso porque requiere incluso menos recursos (peso más ligero) que un TextBlock.


La etiqueta tiene un importante enfoque en el manejo de la responsabilidad. Su propósito es permitirle colocar un título con una clave de acceso. Tiene una propiedad Target , que indica el objetivo de la clave de acceso. Me gusta esto...

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

En ausencia de la propiedad Target, el control Label no hace nada útil. Escuchará un pitido si presiona la tecla de acceso que indica "no se puede procesar la solicitud"


Label toma todo tipo de entradas de datos como String, Number, etc ... TextBlock, como su nombre indica, solo acepta una cadena de texto.


Las dos principales razones de la confusión con respecto a TextBlocks y etiquetas son las formas de Windows y el sentido común.

  1. Cuando quería colocar un pequeño texto en su formulario en Windows Forms, utilizó una etiqueta, por lo que sigue (incorrectamente) que haría lo mismo con una etiqueta de WPF.

  2. El sentido común lo llevaría a creer que una etiqueta es liviana y un bloque de texto no lo es, cuando sucede lo contrario.

Tenga en cuenta que puede poner un TextBlock dentro de una etiqueta.