IQueryAmbient 接口
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
查询是否应将指定的属性视为当前范围中的环境属性。
public interface class IQueryAmbient
public interface IQueryAmbient
type IQueryAmbient = interface
Public Interface IQueryAmbient
- 派生
注解
环境属性机制的目的是通过通知 XAML 对象编写者避免实例化某些对象来缩短分析时间,如果已知对象是临时值,并且对典型的运行时应用程序没有用。 通常,XAML 查找或对属性 get 访问器的 XAML 处理需要实例化此类对象,以使用现成的值填充对象图表示形式。
IQueryAmbient 有一个成员: IsAmbientPropertyAvailable。
IQueryAmbient 是 的并行机制 AmbientAttribute。
IQueryAmbient 是一种专用机制,可避免使用反射来确定信息,还可以 (给定对象可以选择报告 true
或 false
) IsAmbientPropertyAvailable ,而 属性实质上是静态分析) 。
AmbientAttribute 是 XAML 对象编写器可以使用的常规机制,通常与专用 XAML 类型系统属性 IsAmbient 和 IsAmbient相关联。
IQueryAmbient 的 WPF 实现
在 WPF 中, IQueryAmbient 用于资源字典查找过程。 查找过程将获取整个 WPF 逻辑树中的连续 Resources
值,并针对资源范围的根目录工作,直到找到键或确定该键在范围内不存在。 通常,这样做需要每次实例化 才能 ResourceDictionary 接收结果。 将 的内容 Resources
声明为环境(只要 Resources
存在)可优化此查找过程。 在 WPF 中,此接口在以下情况下实现:
FrameworkElement IQueryAmbient.IsAmbientPropertyAvailable实现 如果
true
它包含 的现有 ResourceDictionary 属性Resources名称,并且只要查询不针对Resources属性本身,则返回所有属性名称。Application 对其 Resources实现相同的模式。
FrameworkContentElement 对其 Resources实现相同的模式。
FrameworkTemplate 对其 Resources实现相同的模式。 它还将内容报告Template为环境,但如果自行查询Template,则
false
返回 。在这些情况下, (和) 的相关
Resources
属性都归为 AmbientAttribute。Template 典型的用法是查询属性,这些属性不是 AmbientAttribute 定义 接口的 对象的特性化属性。 换句话说,只要存在资源字典以便在创建对象图时提供潜在的运行时值,资源字典的属性容器以外的任何其他属性都可以被视为环境。
方法
IsAmbientPropertyAvailable(String) |
查询可否将指定的命名属性视为当前范围中的环境属性。 |