用途:在 WPF 中实现 UI 自动化(UI Automation)与无障碍支持,使屏幕阅读器(如 Narrator、JAWS)和自动化测试工具能正确识别与操作界面。
主要能力:通过 AutomationProperties 设置 Name、HelpText、LabeledBy、AcceleratorKey、AccessKey、ItemStatus、ItemType、LiveSetting 等属性;为自定义控件创建 AutomationPeer(如继承 FrameworkElementAutomationPeer),重写 GetAutomationControlTypeCore、GetClassNameCore、GetNameCore、GetHelpTextCore;实现常见自动化模式(IInvokeProvider、IToggleProvider、ISelectionProvider、ISelectionItemProvider、IRangeValueProvider、IValueProvider、IExpandCollapseProvider、IScrollProvider);通过 RaisePropertyChangedEvent、RaiseAutomationEvent 触发自动化事件;处理焦点与键盘导航(Focusable、FocusVisualStyle、OnKeyDown);用 LiveSetting 与 LiveRegionChanged 实现屏幕阅读器播报。
使用方式:为控件设置 AutomationProperties 属性;自定义控件重写 OnCreateAutomationPeer 返回自定义 Peer;在 GetPattern 中按 PatternInterface 暴露对应 Provider;在依赖属性变更回调中通过 UIElementAutomationPeer.FromElement 获取 Peer 并触发事件。前置条件包括 AssemblyInfo.cs 中的 ThemeInfo 属性、CustomControl 项目结构、静态构造函数中的 DefaultStyleKeyProperty。
适用场景:构建无障碍 WPF 应用、为自定义控件补充屏幕阅读器支持、编写 UI 自动化测试。
限制:资料未提供具体收费、价格、平台版本要求或性能数据;测试工具 Inspect.exe 位于 Windows SDK 的 bin[arch] 目录,Narrator 可用 Windows+Ctrl+Enter 切换。