Поделиться через


IQueryAmbient Интерфейс

Определение

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

public interface class IQueryAmbient
public interface IQueryAmbient
type IQueryAmbient = interface
Public Interface IQueryAmbient
Производный

Комментарии

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

IQueryAmbient имеет один элемент: IsAmbientPropertyAvailable.

IQueryAmbient является параллельным механизмом для AmbientAttribute. IQueryAmbient — это специализированный механизм, который избегает использования отражения для определения информации, а также может действовать ситуарно (данный объект может выбрать для отчета true или false для IsAmbientPropertyAvailable), тогда как атрибут по сути является статическим анализом). AmbientAttribute — это общий механизм, который может использоваться средствами записи объектов XAML и обычно коррелирует с выделенными системными свойствами IsAmbient типа XAML и IsAmbient.

Реализации WPF IQueryAmbient

В WPF IQueryAmbient используется для поиска по словарю ресурсов. Процесс поиска получает последовательные Resources значения по всему логическому дереву WPF, работая в направлении корня область ресурса, пока не будет найден ключ или ключ не будет определен как не существующий в область. Как правило, для этого требуется каждый раз создавать экземпляр для ResourceDictionary получения результатов. Объявление содержимого как окружающего Resources до тех пор, пока Resources существует, оптимизирует этот процесс поиска. В WPF этот интерфейс реализуется в следующих случаях:

  • FrameworkElement IQueryAmbient.IsAmbientPropertyAvailable реализует , чтобы возвращать true для всех имен свойств, если он содержит существующий ResourceDictionary объект для Resources, и при условии, что запрос не предназначен для Resources самого свойства.

  • Style реализует тот же шаблон для своего Resources.

  • Application реализует тот же шаблон для своего Resources.

  • FrameworkContentElement реализует тот же шаблон для своего Resources.

  • FrameworkTemplate реализует тот же шаблон для своего Resources. Он также сообщает о Template содержимом как окружающее, но возвращается false , если запрашивает Template себя.

  • В каждом из этих случаев соответствующее Resources свойство (и Template) присваивается как AmbientAttribute. Типичное использование заключается в запросе свойств, которые НЕ AmbientAttribute являются атрибутами свойств объекта, определяющего интерфейс. Иными словами, если существует словарь ресурсов для предоставления потенциального значения времени выполнения при создании графа объектов, любое другое свойство, кроме контейнера свойств словаря ресурсов, можно рассматривать как внешнее.

Методы

IsAmbientPropertyAvailable(String)

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

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

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