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