IAmbientProvider Интерфейс

Определение

Представляет службу, которая может возвращать элементы сведений о внешних свойствах или внешних типах преобразователям типов и расширениям разметки.

public interface class IAmbientProvider
public interface IAmbientProvider
type IAmbientProvider = interface
Public Interface IAmbientProvider

Комментарии

Этот интерфейс представляет службу, которая может помочь преобразователям типов и расширениям разметки получить идентификаторы внешних свойств для системы типов XAML (XamlMember объектов). Служба также может получать значения свойств окружения из классов. Типы также могут быть внешними; любой элемент, использующий этот тип в качестве значения, должен считаться внешним.

Обычно эта служба возвращается через вызов GetService, который выполняется в отношении поставщика услуг, зависяющего от контекста. Поставщик услуг является общедоступным для контекстов, которым он нужен, например код выполнения преобразователя значений. Дополнительные сведения см. в разделе "Преобразователи типов" и "Расширения разметки" для XAML и контекстов служб, доступных для преобразователей типов и расширений разметки.

Сведения о внешних свойствах

Внешнее свойство — это свойство, значение свойства которого должно быть доступно для использования преобразователя типов и расширения разметки, которые существуют в структуре узла XAML и в графе объектов, созданном из него. Это относится к обработчику XAML на этапе записи объекта пути загрузки или этапа сериализации пути сохранения.

В случае пути загрузки значение внешнего свойства может повлиять на значение в графе объектов других свойств, которые существуют под ним в структуре узла XAML. При обработке в виде потока узлов XAML концепция окружения означает, что значение внешнего свойства должно быть доступно для преобразователей типов и расширений разметки из StartObject .EndObject Аналогичным образом преобразователь типов, используемый для пути сохранения, может использовать знания о свойстве окружения и его значении. Таким образом, создаваемый XAML является лучшим представлением кругового пути.

Для элементов в целом XAML не указывает порядок обработки элементов объекта. Однако любое значение внешнего свойства сначала должно обрабатываться средством чтения XAML, чтобы преобразователь типов и расширения разметки, содержащиеся в других свойствах, могли обращаться к нему через IAmbientProvider службу.

DependsOn — это аналогичная концепция, которая также влияет на порядок обработки узлов XAML. DependsOn Однако можно использовать только для связей одноранговых узлов и одноранговых узлов; они не могут влиять на всех потомков. Кроме того, DependsOn непосредственно влияет на параметр свойства графа объектов, тогда как внешний метод зависит от преобразователей типов или расширений разметки. В методе окружения также должен быть определенный преобразователь типов или определение расширения разметки, указывающее, как следует интерпретировать и применять значение внешнего свойства к объекту.

Примечания об использовании WPF

Сценарий внешнего свойства, иллюстрированный в наборе Style.TargetTypeфункций WPF, который может квалифицировать необходимые подстановки имен свойств для других значений. В этом случае Style.TargetType значение квалифициирует Setter.Property значения, расположенные в узлах XAML под ним. Setter.Property использует поведение преобразователя типов для объекта DependencyProperty. Это поведение обращается к внешнему Style.TargetType значению, запрашивая GetFirstAmbientValue из контекста службы, доступного для преобразователей типов и расширений разметки.

Сценарий внешнего типа, показанный в наборе ResourceDictionaryфункций WPF. ResourceDictionaryMergedDictionaries имеет свойство, которое может содержать другие ResourceDictionary объекты для слияния, и предполагаемый порядок разрешения ресурсов для объединенного сценария столкновений с порядком загрузки типов. ResourceDictionary применяется AmbientAttribute , чтобы обработчик XAML правильно обрабатывал ссылки в объединенном словаре с StaticResource использованием. В частности, StaticResource это расширение разметки, которое вызывает GetAllAmbientValues.

Методы

GetAllAmbientValues(IEnumerable<XamlType>, Boolean, IEnumerable<XamlType>, XamlMember[])

Возвращает перечислимый набор информационных элементов внешнего свойства для запрошенного набора типов и свойств.

GetAllAmbientValues(IEnumerable<XamlType>, XamlMember[])

Возвращает перечислимый набор информационных элементов внешнего свойства для запрошенного набора свойств.

GetAllAmbientValues(XamlType[])

Возвращает перечислимый набор экземпляров объектов возможных внешних типов для запрошенных типов.

GetFirstAmbientValue(IEnumerable<XamlType>, XamlMember[])

Возвращает один информационный элемент внешнего типа или свойства из запрошенного набора свойств на основе того, какое из свойств встретилось первым.

GetFirstAmbientValue(XamlType[])

Возвращает первый соответствующий объект, являющийся возможным внешним типом для запрошенных типов.

Применяется к

См. также раздел