Службы XAML
В этом разделе описываются возможности набора технологий, известного как службы XAML .NET. Большинство описанных служб и API находятся в System.Xaml
сборки. Службы включают средства чтения и записи, классы схем и поддержку схем, фабрики, а также атрибуты классов, встроенную поддержку языка XAML и другие функции языка XAML.
Сведения об этой документации
Концептуальная документация для служб XAML .NET предполагает, что у вас есть предыдущий опыт работы с языком XAML и его применение к определенной платформе, например Windows Presentation Foundation (WPF) или Windows Workflow Foundation, или определенной области технологий, например функции настройки сборки в Microsoft.Build.Framework.XamlTypes. Эта документация не пытается объяснить основы XAML как язык разметки, терминологию синтаксиса XAML или другие вводные материалы. Вместо этого в этой документации основное внимание уделяется использованию служб XAML .NET, включенных в библиотеке сборок System.Xaml. Большинство этих API предназначены для сценариев интеграции языка XAML и расширяемости. Это может включать любой из следующих сценариев:
Расширение возможностей базовых средств чтения XAML или записи XAML (обработка потока узлов XAML напрямую; создание собственного средства чтения XAML или записи XAML).
Определение настраиваемых типов XAML, которые не имеют определенных зависимостей платформы, и при этом типы передают характеристики системы типов XAML службам XAML.
Размещение средств чтения XAML или записи XAML в качестве компонента приложения, например визуального конструктора или интерактивного редактора для источников разметки XAML.
Написание преобразователей значений XAML (расширения разметки; преобразователей типов для пользовательских типов).
Определение пользовательского контекста схемы XAML (использование альтернативных методов загрузки сборок для источников типов резервного копирования; использование методов подстановки известных типов вместо всегда отражения сборок; использование загруженных концепций сборки, которые не используют
AppDomain
среды CLR и связанной с ней модели безопасности).Расширение базовой системы типов XAML.
Использование методов
Lookup
илиInvoker
для влияния на систему типов XAML и способ вычисления резервных типов типов.
Если вы ищете вводные материалы по XAML в качестве языка, вы можете попробовать обзор XAML (WPF .NET). В этом разделе рассматривается XAML для аудитории, которая является новой как для Windows Presentation Foundation (WPF), так и для использования разметки XAML и функций языка XAML. Другой полезный документ — это вводные материалы в спецификации языка XAML .
Службы .NET XAML и System.Xaml
в архитектуре .NET
Службы XAML .NET и сборка System.Xaml
определяют большую часть того, что необходимо для поддержки функций языка XAML. Это включает базовые классы для средств чтения XAML и записи XAML. Наиболее важным компонентом, добавленным в службы XAML .NET, которые не присутствовали ни в одной из реализаций XAML для конкретной платформы, является системным представлением типа для XAML. Представление системы типов представляет XAML в объектно-ориентированном режиме, который сосредоточен на возможностях XAML, не принимая зависимости от конкретных возможностей платформ.
Система типов XAML не ограничивается формой разметки или спецификой времени выполнения источника XAML; не ограничивается какой-либо конкретной системой резервного типа. Система типов XAML включает представления объектов для типов, членов, контекстов схемы XAML, концепций уровня XML и других концепций языка XAML или встроенных элементов XAML. Использование или расширение системы типов XAML позволяет получать производные от классов, таких как средства чтения XAML и записи XAML, а также расширить функциональные возможности представлений XAML на определенные функции, включенные платформой, технологией или приложением, которое использует или выдает XAML. Концепция контекста схемы XAML позволяет практическим операциям записи графа объектов из сочетания реализации модуля записи объектов XAML, системы резервного типа технологии, сообщаемой с помощью сведений о сборке в контексте, и источника узла XAML. Дополнительные сведения о концепции схемы XAML. см. контекст схемы XAML по умолчанию и контекст схемы WPF XAML.
Потоки узлов XAML, средства чтения XAML и записи XAML
Чтобы понять роль, которую службы XAML .NET играют в связи между языком XAML и определенными технологиями, используюющими XAML в качестве языка, полезно понять концепцию потока узлов XAML и как эта концепция формирует API и терминологию. Поток узлов XAML является концептуальной промежуточной между представлением языка XAML и графом объектов, который представляет или определяет XAML.
Средство чтения XAML — это сущность, которая обрабатывает XAML в некоторой форме и создает поток узлов XAML. В API средство чтения XAML представлено базовым классом XamlReader.
Модуль записи XAML — это сущность, которая обрабатывает поток узла XAML и создает что-то другое. В API модуль записи XAML представлен базовым классом XamlWriter.
Два наиболее распространенных сценария, связанных с XAML, — загрузка XAML для создания экземпляра графа объектов и сохранение графа объектов из приложения или инструмента и создание представления XAML (обычно в форме разметки, сохраненной в виде текстового файла). Загрузка XAML и создание графа объектов часто называются в этой документации путем загрузки. Сохранение или сериализация существующего графа объектов в XAML часто называется в этой документации путем сохранения.
Наиболее распространенный тип пути загрузки можно описать следующим образом:
Начните с представления XAML в формате XML в кодировке UTF и сохранены в виде текстового файла.
Загрузите код XAML в XamlXmlReader. XamlXmlReader — это подкласс XamlReader.
Результатом является поток узлов XAML. Доступ к отдельным узлам потока узлов XAML можно получить с помощью API XamlXmlReader / XamlReader. Наиболее типичной операцией здесь является переход через поток узлов XAML, обрабатывая каждый узел с помощью метафоры текущей записи.
Передайте полученные узлы из потока узлов XAML в XamlObjectWriter API. XamlObjectWriter — это подкласс XamlWriter.
XamlObjectWriter записывает граф объектов, один объект за раз в соответствии с выполнением потока исходного узла XAML. Написание объектов осуществляется с помощью контекста схемы XAML и реализации, которая может получить доступ к сборкам и типам системы и платформы резервного типа.
Вызовите Result в конце потока узла XAML, чтобы получить корневой объект графа объектов.
Наиболее распространенный тип пути сохранения можно описать следующим образом:
Начните с графа объектов всего времени выполнения приложения, содержимого пользовательского интерфейса и состояния времени выполнения или меньшего сегмента представления объекта общего приложения во время выполнения.
В объекте логического запуска, например корневом каталоге приложения или корневом каталоге документа, загрузите объекты в XamlObjectReader. XamlObjectReader — это подкласс XamlReader.
Результатом является поток узлов XAML. Доступ к отдельным узлам потока узлов XAML можно получить с помощью XamlObjectReader и API XamlReader. Наиболее типичной операцией здесь является переход через поток узлов XAML, обрабатывая каждый узел с помощью метафоры текущей записи.
Передайте полученные узлы из потока узлов XAML в XamlXmlWriter API. XamlXmlWriter — это подкласс XamlWriter.
XamlXmlWriter записывает XAML в кодировке XML UTF. Этот файл можно сохранить в виде текстового файла, в виде потока или в других формах.
Вызовите Flush, чтобы получить окончательные выходные данные.
Дополнительные сведения о понятиях потока узлов XAML см. в статье Общие сведения о структурах и понятиях потока узлов XAML.
Класс XamlServices
Не всегда необходимо иметь дело с потоком узлов XAML. Если требуется базовый путь загрузки или базовый путь сохранения, можно использовать API в классе XamlServices.
Различные подписи Load реализуют путь загрузки. Вы можете загрузить файл или поток или загрузить XmlReader, TextReader или XamlReader, которые упаковывают входные данные XAML путем загрузки с помощью API этого средства чтения.
Различные подписи Save сохранять граф объектов и создавать выходные данные в виде потока, файла или экземпляра XmlWriter/TextWriter.
Transform преобразует XAML путем связывания пути загрузки и пути сохранения в виде одной операции. Для XamlReader и XamlWriterможно использовать другой контекст схемы или другую систему резервного типа, что влияет на преобразование результирующего XAML.
Дополнительные сведения об использовании XamlServicesсм. в разделе класса XAMLServices и базовое чтение или запись XAML.
Система типов XAML
Система типов XAML предоставляет API- интерфейсы, необходимые для работы с заданным отдельным узлом потока узлов XAML.
XamlType представляет собой представление объекта — то, что обрабатывается между начальным узлом объекта и конечным узлом объекта.
XamlMember представляет собой элемент объекта — то, что обрабатывается между начальным узлом-членом и конечным узлом-членом.
API, такие как GetAllMembers и GetMember и DeclaringType сообщают о связях между XamlType и XamlMember.
Поведение по умолчанию системы типов XAML, реализованной службами XAML .NET, основано на среде CLR и статического анализа типов СРЕДЫ CLR в сборках с помощью отражения. Поэтому для определенного типа СРЕДЫ CLR реализация системы типов XAML по умолчанию может предоставлять схему XAML этого типа и ее членов и сообщать о ней с точки зрения системы типов XAML. В системе типов XAML по умолчанию концепция присваиваемости типов сопоставляется с наследованием СРЕДЫ CLR, а понятия экземпляров, типов значений и т. д. также сопоставляются с вспомогательными поведениями и функциями среды CLR.
Справочник по функциям языка XAML
Для поддержки XAML службы XAML предоставляют конкретную реализацию концепций языка XAML, определенных для пространства имен XAML языка XAML. Они задокументированы как конкретные справочные страницы. Функции языка документируются с точки зрения поведения этих языковых функций при обработке с помощью средства чтения XAML или средства записи XAML, определяемого службами XAML. Дополнительные сведения см. в разделе языковых возможностей пространства имен XAML (x:).
.NET Desktop feedback