version of the ItemsControl. public class FixedItemsControl : ItemsControl { protected override AutomationPeer // GroupItemAutomationPeer.cs protected override List<AutomationPeer> GetChildrenCore() { GroupItem = null) { List<AutomationPeer> children = new List<AutomationPeer>(); // UIElement.cs protected virtual AutomationPeer OnCreateAutomationPeer() { if (!
API来创建窗口,使用Win32 API并不能查找和操作WPF控件 WPF所有控件和动画都是使用DirectX 绘制 WPF控件不直接支持MSAA,而是通过 UIA 用桥转换技术来支持MSAA WPF用AutomationPeer 类支持自动化,每一种控件都有对应的 AutomationPeer类。 AutomationPeer不直接暴露给测试客户端,而是通过UIA来使用。 UIA向应用程序窗口发送WM_GetObject消息,获得由AutomationPeer实现的UIA Server端Provider。 AutomationPeer由控件创建(OnCreateAutomationPeer) UIAutomation UIAutomation是微软从Windows Vista开始推出的一套全新UI自动化测试技术
如果还希望特别交互的控件被复用(不适合用 UserControl),那么你需要为这个控件重写 OnCreateAutomationPeer 方法,返回一个合适的 AutomationPeer 的实例。 protected override AutomationPeer? protected override AutomationPeer? OnCreateAutomationPeer() { return new WalterlvDemoAutomationPeer(this); } } // 自定义的 AutomationPeer