客户端的 UI 自动化控件模式

备注

本文档适用于想要使用 System.Windows.Automation 命名空间中定义的托管 UI 自动化类的 .NET Framework 开发人员。 有关 UI 自动化的最新信息,请参阅 Windows 自动化 API:UI 自动化

此概述介绍 UI 自动化客户端的控件模式。 它包括有关 UI 自动化客户端如何使用控件模式访问用户界面 (UI) 相关信息的信息。

控件模式提供了一种方法,用于独立于控件类型或控件的外观对控件的功能进行分类和公开。 UI 自动化客户端可以检查 AutomationElement 以确定哪些控件模式受支持并确保控件的行为。

有关控件模式的完整列表,请参阅 UI Automation Control Patterns Overview

获取控件模式

客户端通过调用 AutomationElementAutomationElement.GetCachedPatternAutomationElement.GetCurrentPattern检索控件模式。

客户端可以使用 GetSupportedPatterns 方法或单个 IsPatternAvailable 属性(例如 IsTextPatternAvailableProperty)来确定一个模式或一组模式是否在 AutomationElement上受支持。 但是,尝试获取控件模式并针对 null 引用进行测试比检查支持的属性并检索控件模式更高效,因为这样进行的跨进程调用更少。

以下示例演示如何从 TextPattern 获取 AutomationElement控件模式。

// Specify the control type we're looking for, in this case 'Document'
PropertyCondition cond = new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Document);

// target --> The root AutomationElement.
AutomationElement textProvider = target.FindFirst(TreeScope.Descendants, cond);

targetTextPattern = textProvider.GetCurrentPattern(TextPattern.Pattern) as TextPattern;

if (targetTextPattern == null)
{
    Console.WriteLine("Root element does not contain a descendant that supports TextPattern.");
    return;
}

检索控件模式上的属性

客户端可以通过调用 AutomationElement.GetCachedPropertyValueAutomationElement.GetCurrentPropertyValue 并将返回的对象强制转换为适当类型,来检索控件模式上的属性值。 有关 UI 自动化属性的详细信息,请参阅客户端的 UI 自动化属性

除了 GetPropertyValue 方法之外,还可以通过公共语言运行时 (CLR) 访问器检索属性值,以访问模式上的 UI 自动化属性。

具有可变模式的控件

某些控件类型支持不同的模式,具体取决于它们的状态或使用控件的方式。 可以具有可变模式的控件示例包括列表视图(缩略图、图块、图标、列表、详细信息)、Microsoft Excel 图表(饼图、折线图、条形图、带有公式的单元格值)、Microsoft Word 的文档区域(普通、Web 布局、大纲、打印布局、打印预览)和 Microsoft Windows Media Player 外观。

实现自定义控件类型的控件可以具有表示其功能所需的任何控件模式集。

请参阅