Compartir a través de


Bloque de

El bloque es el control principal para mostrar texto de solo lectura en aplicaciones. Puede usarlo para mostrar texto de una sola línea o de varias líneas, hipervínculos en línea y texto con formato como negrita, cursiva o subrayado.

¿Es este el control adecuado?

Normalmente, un bloque de texto es más fácil de usar y proporciona un mejor rendimiento de representación de texto que un bloque de texto enriquecido, por lo que es preferible para la mayoría del texto de la interfaz de usuario de la aplicación. Puedes acceder fácilmente y usar texto de un bloque de texto en tu aplicación obteniendo el valor de la propiedad . También proporciona muchas de las mismas opciones de formato para personalizar cómo se representa el texto.

Aunque puedes incluir saltos de línea en el texto, el bloque de texto está diseñado para mostrar un único párrafo y no admite la sangría del texto. Use un RichTextBlock cuando necesite compatibilidad con varios párrafos, texto de varias columnas u otros diseños de texto complejos o elementos de interfaz de usuario insertados como imágenes.

Para obtener más información sobre cómo elegir el control de texto correcto, consulta el artículo controles.

Creación de un bloque de texto

  • API importantes:clase , propiedad , propiedad

Abrir la aplicación Galería de WinUI 3 y ver el en acción

Icono de la galería de WinUI 3 La aplicación Galería de WinUI 3 incluye ejemplos interactivos de características y controles winUI. Obtenga la aplicación del Microsoft Store o examine el código fuente en GitHub.

Aquí se muestra cómo definir un control simple y establecer su propiedad en una cadena.

<TextBlock Text="Hello, world!" />
TextBlock textBlock1 = new TextBlock();
textBlock1.Text = "Hello, world!";

Modelo de contenido

Hay dos propiedades que puede usar para agregar contenido a un : y .

La forma más común de mostrar texto es establecer la propiedad en un valor de cadena, como se muestra en el ejemplo anterior.

También puede agregar contenido colocando elementos de flujo en línea en la propiedad , como este ejemplo. ( es la propiedad de contenido predeterminada de un , por lo que no es necesario agregarla explícitamente en XAML).

<TextBlock>Text can be <Bold>bold</Bold>, <Underline>underlined</Underline>, 
    <Italic>italic</Italic>, or a <Bold><Italic>combination</Italic></Bold>.</TextBlock>

Los elementos derivados de la clase , como , , , y , permiten un formato diferente para diferentes partes del texto. Para obtener más información, consulta la sección Formato de texto . El elemento en línea hipervínculo le permite agregar un hipervínculo a su texto. Sin embargo, usar también deshabilita la representación rápida de texto, que se describe en la sección siguiente.

Consideraciones sobre el rendimiento

Siempre que sea posible, XAML utiliza una ruta de ejecución de código más eficaz para diseñar texto. Esta ruta de acceso rápida disminuye el uso general de la memoria y reduce considerablemente el tiempo de CPU para la medición y organización del texto. Esta ruta de acceso rápida solo se aplica a , por lo que debe preferirse siempre que sea posible sobre RichTextBlock.

Algunas condiciones requieren que recurra a una ruta de código más rica en funciones y que requiere más CPU para la representación de texto. Para mantener la representación de texto en la vía rápida, asegúrese de seguir estas instrucciones al configurar las propiedades enumeradas aquí.

  • : la condición más importante es que la ruta de acceso rápida solo se usa cuando estableces texto estableciendo explícitamente la propiedad , ya sea en XAML o en código (como se muestra en los ejemplos anteriores). Establecer el texto a través de la colección de (como ), deshabilitará la ruta de acceso rápido debido a la posible complejidad de varios formatos.
  • CharacterSpacing: solo el valor predeterminado de 0 es la ruta de acceso rápida.
  • TextTrimming: solo los valores de , y son rutas de acceso rápidos. El valor de deshabilita la ruta de acceso rápido.

Puede establecer la propiedad DebugSettings.IsTextPerformanceVisualizationEnabled en durante la depuración para determinar si el texto utiliza la representación de ruta de acceso rápido. Cuando esta propiedad se establece en , el texto que se encuentra en la ruta de acceso rápida se muestra en un color verde brillante.

Normalmente, configura la depuración en la invalidación del método OnLaunched en la página de código subyacente para , de esta manera.

protected override void OnLaunched(LaunchActivatedEventArgs e)
{
#if DEBUG
    if (System.Diagnostics.Debugger.IsAttached)
    {
        this.DebugSettings.IsTextPerformanceVisualizationEnabled = true;
    }
#endif

// ...

}

En este ejemplo, el primer se representa mediante la ruta de acceso rápido, mientras que el segundo no.

<StackPanel>
    <TextBlock Text="This text is on the fast path."/>
    <TextBlock>This text is NOT on the fast path.</TextBlock>
<StackPanel/>

Al ejecutar este XAML en modo de depuración con IsTextPerformanceVisualizationEnabled establecido en , el resultado tiene este aspecto.

representado en modo de depuración

Precaución

No se cambia el color del texto que no está en la ruta de acceso rápida. Si tiene texto en la aplicación con su color especificado como verde brillante, todavía se muestra en verde brillante cuando se encuentra en la ruta de representación más lenta. Tenga cuidado de no confundir el texto establecido en verde en la aplicación con texto que se encuentra en la ruta de acceso rápida y verde debido a la configuración de depuración.

Aplicar formato al texto

Aunque la propiedad almacena texto sin formato, puedes aplicar varias opciones de formato al control para personalizar cómo se representa el texto en la aplicación. Puede establecer propiedades de control estándar como FontFamily, FontSize, FontStyle, de primer plano y CharacterSpacing para cambiar el aspecto del texto. También puede utilizar elementos de texto en línea y las propiedades adjuntas de Tipografía para dar formato a su texto. Estas opciones solo afectan a cómo el muestra el texto localmente, por lo que si copia y pega el texto en un control de texto enriquecido, por ejemplo, no se aplica ningún formato.

Nota:

Recuerde que, como se indicó en la sección anterior, los elementos de texto insertados y los valores de tipografía no predeterminados no se representan en la ruta de acceso rápida.

 elementos

El espacio de nombres Microsoft.UI.Xaml.Documents proporciona una variedad de elementos de texto insertados que puedes usar para dar formato al texto, como , , , y .

Puede mostrar una serie de cadenas en un , donde cada cadena tiene un formato diferente. Puede hacerlo mediante un elemento para mostrar cada cadena con su formato y separando cada elemento con un elemento .

Aquí se explica cómo definir varias cadenas de texto con diferentes formatos en un por medio de objetos separados con un .

<TextBlock FontFamily="Segoe UI" Width="400" Text="Sample text formatting runs">
    <LineBreak/>
    <Run Foreground="Gray" FontFamily="Segoe UI Light" FontSize="24">
        Segoe UI Light 24
    </Run>
    <LineBreak/>
    <Run Foreground="Teal" FontFamily="Georgia" FontSize="18" FontStyle="Italic">
        Georgia Italic 18
    </Run>
    <LineBreak/>
    <Run Foreground="Black" FontFamily="Arial" FontSize="14" FontWeight="Bold">
        Arial Bold 14
    </Run>
</TextBlock>

Este es el resultado.

formateado con elementos run

Typography

Las propiedades adjuntas de la clase Typography proporcionan access a un conjunto de propiedades tipográficas de Microsoft OpenType. Puede establecer estas propiedades adjuntas ya sea en el o bien en elementos de texto insertados individuales. Estos ejemplos muestran ambos.

<TextBlock Text="Hello, world!"
           Typography.Capitals="SmallCaps"
           Typography.StylisticSet4="True"/>
TextBlock textBlock1 = new TextBlock();
textBlock1.Text = "Hello, world!";
Typography.SetCapitals(textBlock1, FontCapitals.SmallCaps);
Typography.SetStylisticSet4(textBlock1, true);
<TextBlock>12 x <Run Typography.Fraction="Slashed">1/3</Run> = 4.</TextBlock>
  • Controles
  • Clase TextBox
  • Clase PasswordBox
  • Propiedad String.Length