实现 UI 自动化 Value 控件模式
备注
本文档适用于想要使用 System.Windows.Automation 命名空间中定义的托管 UI 自动化类的 .NET Framework 开发人员。 有关 UI 自动化的最新信息,请参阅 Windows 自动化 API:UI 自动化。
本主题介绍了实现 IValueProvider的准则和约定,包括有关事件和属性的信息。 本主题的结尾列出了指向其他参考资料的链接。
ValuePattern 控件模式用于支持具有未跨越范围的内部值的控件,以及可用字符串表示的控件。 此字符串是可编辑的,具体取决于控件及其设置。 有关实现此模式的控件的示例,请参阅 Control Pattern Mapping for UI Automation Clients。
实现准则和约定
在实现 Value 控件模式时,请注意以下准则和约定:
- 如果任何项的值是可编辑的,则诸如 ListItem 和 TreeItem 等控件必须支持 ValuePattern ,而无论控件的当前编辑模式。 如果子项是可编辑的,则父控件还必须支持 ValuePattern 。
可编辑的列表项示例
单行编辑控件支持通过实现 IValueProvider编程访问其内容。 但是,多行编辑控件不实现 IValueProvider;相反,它们通过实现 ITextProvider来提供对其内容的访问。
若要检索多行编辑控件的文本内容,控件必须实现 ITextProvider。 但是, ITextProvider 不支持设置控件的值。
IValueProvider 不支持检索格式设置信息或子字符串值。 在这些情况下,请实现 ITextProvider 。
IValueProvider 必须由诸如 Microsoft Word 中的“颜色选取器”选择控件(如下所示)之类的控件实现,该控件支持颜色值(例如,“黄色”)与等效的内部 RGB 结构之间的字符串映射。
颜色样本字符串映射示例
- 在允许调用 IsEnabledProperty 之前,控件应将其
true
设置为 IsReadOnlyProperty ,并将其false
设置为 SetValue。
IValueProvider 必需的成员
实现 IValueProvider需要以下属性和方法。
必需的成员 | 成员类型 | 说明 |
---|---|---|
IsReadOnlyProperty | 属性 | 无 |
ValueProperty | 属性 | 无 |
SetValue | 方法 | 无 |
例外
提供程序必须引发以下异常。
例外类型 | 条件 |
---|---|
InvalidOperationException | SetValue - 如果向控件传递了格式错误的特定于区域设置的信息(如格式错误的日期)。 |
ArgumentException | SetValue - 如果无法将新值从字符串转换为控件可识别的格式。 |
ElementNotEnabledException | SetValue - 当尝试操作未启用的控件时。 |