Compartir a través de


XAML y espacio en blanco

Obtenga información sobre las reglas de procesamiento de espacios en blanco que usa XAML.

Procesamiento de espacios en blanco

Coherente con XML, los caracteres de espacio en blanco en XAML son espacio, avance de línea y tabulación. Estos corresponden a los valores Unicode 0020, 000A y 0009 respectivamente. De forma predeterminada, esta normalización de espacios en blanco se produce cuando un procesador XAML encuentra cualquier texto interno encontrado entre elementos de un archivo XAML:

  • Se quitan los caracteres de avance de línea entre los caracteres de Este de Asia.
  • Todos los caracteres de espacio en blanco (espacio, avance de línea, tabulación) se convierten en espacios.
  • Todos los espacios consecutivos se eliminan y reemplazan por un espacio.
  • Se elimina el espacio que sigue inmediatamente a la etiqueta inicial.
  • Se elimina el espacio situado inmediatamente antes de la etiqueta de cierre.
  • Los caracteres asiáticos orientales se definen como un conjunto de intervalos de caracteres Unicode U+2000 a U+2FFFD y U+30000 a U+3FFFD. Este subconjunto también se conoce a veces como ideógrafos de CJK. Para obtener más información, vea http://www.unicode.org.

El "valor predeterminado" corresponde al estado indicado por el valor predeterminado del atributo xml:space .

Espacios en blanco en texto interno y primitivos de cadena

Las reglas de normalización anteriores se aplican al texto interno dentro de los elementos XAML. Después de la normalización, un procesador XAML convierte cualquier texto interno en un tipo adecuado como este:

  • Si el tipo de la propiedad no es una colección, pero no es directamente un tipo Object , el procesador XAML intenta convertir a ese tipo mediante su convertidor de tipos. Una conversión con error aquí da como resultado un error de análisis xaml.
  • Si el tipo de la propiedad es una colección y el texto interno es contiguo (sin etiquetas de elemento intermedias), el texto interno se analiza como una sola cadena. Si el tipo de colección no puede aceptar String, esto también produce un error del analizador XAML.
  • Si el tipo de la propiedad es Object, el texto interno se analiza como una sola cadena. Si hay etiquetas de elemento intermedias, esto da como resultado un error del analizador XAML, ya que el tipo object implica un único objeto (String o de otro modo).
  • Si el tipo de la propiedad es una colección y el texto interno no es contiguo, la primera subcadena se convierte en una cadena y se agrega como un elemento de colección, el elemento intermedio se agrega como un elemento de colección y, por último, la subcadena final (si existe) se agrega a la colección como un tercer elemento String .

Espacios en blanco y con texto modo carpa ls

En la práctica, conservar el espacio en blanco solo es importante para un subconjunto de todas las con modo carpa ls posibles. Ese subconjunto se compone de con modo carpa ls que pueden tomar un tipo singleton String de algún modo, una colección String dedicada o una mezcla de String y otros tipos en listas, colecciones o diccionarios.

Incluso para los modelos de contenido que pueden aceptar cadenas, el comportamiento predeterminado dentro de estos modelos de contenido consiste en no tratar como significativo el espacio en blanco restante.

Conservación del espacio en blanco

Varias técnicas para conservar el espacio en blanco en el XAML de origen para la presentación final no se ven afectadas por la normalización del espacio en blanco del procesador XAML.

xml:space="preserve": especifique este atributo en el nivel del elemento donde se debe conservar el espacio en blanco. Tenga en cuenta que esto conserva todos los espacios en blanco, incluidos los espacios que pueden agregar los editores de código o las superficies de diseño para alinear los elementos de marcado como un anidamiento visualmente intuitivo. Si esos espacios se representan de nuevo es una cuestión de con modo carpa l para el elemento contenedor. No se recomienda especificar xml:space="preserve" en el nivel raíz, ya que la mayoría de los modelos de objetos no consideran que el espacio en blanco sea significativo de una u otra manera. Se recomienda limitarse a establecer el atributo específicamente en el nivel de los elementos que presentan el espacio en blanco contenido en las cadenas o que son colecciones con espacio en blanco significativo.

Entidades y espacios sin separación: XAML admite la colocación de cualquier entidad Unicode dentro de un modelo de objetos de texto. Puede usar entidades dedicadas, como el espacio sin separación (en codificación UTF-8). También puede usar controles de texto enriquecido que sean compatibles con caracteres de espacio de no separación. Tenga cuidado si usa entidades para simular características de diseño como sangrías, ya que la salida en tiempo de ejecución de las entidades varía en función de un mayor número de factores de los que serían las instalaciones de diseño generales, como el uso adecuado de paneles y márgenes.