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


IQueryAmbient Интерфейс

Определение

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

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

Комментарии

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

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)

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

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

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