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