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[]) |
Возвращает первый соответствующий объект, являющийся возможным внешним типом для запрошенных типов. |