Partager via


XAML et espace blanc

Découvrez les règles de traitement d’espace blanc utilisées par XAML.

Traitement de l’espace blanc

Conformément au code XML, les espaces blancs en XAML sont des espaces, un flux de lignes et un onglet. Ces valeurs correspondent respectivement aux valeurs Unicode 0020, 000A et 0009. Par défaut, cette normalisation d’espace blanc se produit lorsqu’un processeur XAML rencontre tout texte interne trouvé entre des éléments dans un fichier XAML :

  • Les caractères de saut de ligne entre les caractères d'Extrême-Orient sont supprimés.
  • Tous les caractères d'espace blanc (espace, saut de ligne, tabulation) sont convertis en espaces.
  • Tous les espaces consécutifs sont supprimés et remplacés par un espace.
  • Un espace qui suit immédiatement la balise de début est supprimé.
  • Un espace qui précède immédiatement la balise de fin est supprimé.
  • Les caractères d’Asie orientale sont définis comme un ensemble de plages de caractères Unicode U+20000 à U+2FFFD et U+30000 à U+3FFFD. Ce sous-ensemble est également parfois appelé idéogrammes CJK. Pour plus d’informations, consultez http://www.unicode.org.

La « valeur par défaut » correspond à l'état désigné par la valeur par défaut de l'attribut xml:space .

Espaces blancs dans le texte interne et primitives de chaîne

Les règles de normalisation ci-dessus s’appliquent au texte interne dans les éléments XAML. Après la normalisation, un processeur XAML convertit tout texte interne en un type approprié comme suit :

  • Si le type de la propriété n’est pas une collection, mais n’est pas directement un type Object , le processeur XAML tente de le convertir en ce type à l’aide de son convertisseur de type. Une conversion ayant échoué ici entraîne une erreur d’analyse XAML.
  • Si le type de la propriété est une collection et que le texte interne est contigu (aucune balise d’élément intermédiaire), le texte interne est analysé sous la forme d’une chaîne unique. Si le type de collection ne peut pas accepter String, cela entraîne également une erreur d’analyseur XAML.
  • Si le type de la propriété est Object, le texte interne est analysé sous la forme d’une chaîne unique. S’il existe des balises d’élément intermédiaires, cela entraîne une erreur d’analyseur XAML, car le type d’objet implique un objet unique (String ou sinon).
  • Si le type de la propriété est une collection et que le texte interne n’est pas contigu, la première sous-chaîne est convertie en chaîne et ajoutée en tant qu’élément de collection, l’élément intermédiaire est ajouté en tant qu’élément de collection, et enfin la sous-chaîne de fin (le cas échéant) est ajoutée à la collection en tant que troisième élément String.

Espaces blancs et con mode tente ls de texte

Dans la pratique, la préservation de l’espace blanc concerne uniquement un sous-ensemble de tous les con mode tente ls possibles. Ce sous-ensemble est composé de con mode tente ls qui peuvent prendre un type string singleton sous une forme, une collection String dédiée ou un mélange de chaînes et d’autres types dans des listes, des collections ou des dictionnaires.

Même pour les modèles de contenu qui peuvent prendre des chaînes, le comportement par défaut de ces modèles de contenu est le suivant : tout espace blanc restant n'est pas traité comme significatif.

Conservation de l’espace blanc

Plusieurs techniques de conservation de l’espace blanc dans le code XAML source pour la présentation éventuelle ne sont pas affectées par la normalisation des espaces blancs du processeur XAML.

xml:space="preserve": spécifiez cet attribut au niveau de l’élément où l’espace blanc doit être conservé. Notez que cela conserve tous les espaces blancs, y compris les espaces qui peuvent être ajoutés par les éditeurs de code ou les surfaces de conception pour aligner les éléments de balisage en tant qu’imbrication visuellement intuitive. Indique si ces espaces sont à nouveau une question du con mode tente l pour l’élément conteneur. Nous vous déconseillons de spécifier xml:space="preserve" au niveau racine, car la majorité des modèles objet ne considèrent pas les espaces blancs comme significatifs d’une façon ou d’une autre. Il est préférable de définir uniquement l'attribut spécifiquement au niveau des éléments qui restituent l'espace blanc dans des chaînes ou qui sont des collections significatives d'espaces blancs.

Entités et espaces non décassants : XAML prend en charge le placement d’une entité Unicode dans un modèle objet texte. Vous pouvez utiliser des entités dédiées telles que l’espace insécable (dans l’encodage UTF-8). Vous pouvez également utiliser des contrôles de texte enrichi qui prennent en charge les caractères d'espace insécable. Soyez prudent si vous utilisez des entités pour simuler des caractéristiques de disposition telles que des retraits, car la sortie au moment de l’exécution des entités varie en fonction d’un plus grand nombre de facteurs que les installations de disposition générales, telles que l’utilisation appropriée des panneaux et des marges.