Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Узнайте о правилах обработки пробелов, используемых XAML.
Обработка пробелов
В соответствии с XML символами пробелов в XAML являются пробелы, линии и вкладки. Они соответствуют значениям Юникода 0020, 000A и 0009 соответственно. По умолчанию эта нормализация пробелов возникает, когда обработчик XAML обнаруживает любой внутренний текст, найденный между элементами в XAML-файле:
- Линейные символы между символами Восточной Азии удаляются.
- Все символы пробелов (пробел, линия, вкладка) преобразуются в пробелы.
- Все последовательные пробелы удаляются и заменяются одним пробелом.
- Пространство сразу после тега запуска удаляется.
- Пространство непосредственно перед удалением конечного тега.
- Символы Восточной Азии определяются как набор символов Юникода от U+20000 до U+2FFFD и U+30000 до U+3FFFD. Это подмножество также иногда называется иеографами CJK. Дополнительные сведения см. в разделе http://www.unicode.org.
Значение по умолчанию соответствует состоянию, которое обозначается значением по умолчанию атрибута xml:space .
Пробелы во внутреннем тексте и строковые примитивы
Приведенные выше правила нормализации применяются к внутреннему тексту в элементах XAML. После нормализации обработчик XAML преобразует любой внутренний текст в соответствующий тип следующим образом:
- Если тип свойства не является коллекцией, но не является напрямую типом объекта , обработчик XAML пытается преобразовать его в этот тип с помощью преобразователя типов. Сбой преобразования здесь приводит к ошибке синтаксического анализа XAML.
- Если тип свойства является коллекцией, а внутренний текст является непрерывным (без тегов промежуточных элементов), внутренний текст анализируется как одна строка. Если тип коллекции не может принять String, это также приводит к ошибке средства синтаксического анализа XAML.
- Если тип свойства — Object, внутренний текст анализируется как одна строка. Если присутствуют вставленные теги элементов, это приводит к ошибке парсера XAML, так как тип Object подразумевает один объект (String или другой тип).
- Если тип свойства является коллекцией, а внутренний текст не является непрерывным, то первая подстрока преобразуется в строку и добавляется в качестве элемента коллекции, промежуточный элемент добавляется как элемент коллекции и, наконец, в коллекцию добавляется конечная подстрока (если есть).
Модели пробелов и текстового содержимого
На практике сохранение пробелов является актуальным только для подмножества всех возможных моделей содержимого. Это подмножество состоит из моделей контента, которые могут принимать однотонный тип String в какой-либо форме, выделенную коллекцию строк или смесь строк и других типов в списках, коллекциях или словарях.
Даже для моделей контента, принимающих строки, поведение по умолчанию в этих моделях заключается в том, что любые пробелы, которые остаются, не рассматриваются как значительные.
Сохранение пробелов
Некоторые методы сохранения пробелов в исходном XAML для конечной презентации не влияют на нормализацию пробелов процессора XAML.
xml:space="preserve": укажите этот атрибут на уровне элемента, в котором необходимо сохранить пробелы. Обратите внимание, что это сохраняет все пробелы, включая пробелы, которые могут быть добавлены редакторами кода или дизайнерскими инструментами, чтобы выровнять элементы разметки в виде визуально понятного вложения. Является ли отображение этих пробелов снова вопросом модели содержания для элемента-контейнера. Мы не рекомендуем указывать xml:space="preserve" на корневом уровне, так как большинство объектных моделей не учитывают пробелы как значимые. Рекомендуется задать атрибут только на уровне элементов, которые отображают пробелы в строках или являются значительными коллекциями пробелов.
Сущности и неразрывные пробелы: XAML поддерживает размещение любой сущности Юникода в текстовой объектной модели. Вы можете использовать выделенные сущности, такие как неразрывное пространство (в кодировке UTF-8). Кроме того, можно использовать элементы управления форматированным текстом, поддерживающие неразрывные пробелы. Будьте осторожны, если вы используете сущности для имитации характеристик макета, таких как отступы, потому что результаты выполнения сущностей зависят от большего числа факторов, чем возможности макета, такие как правильное использование панелей и полей.
Windows developer