FrameworkElementAutomationPeer.CreatePeerForElement(UIElement) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
public:
static AutomationPeer ^ CreatePeerForElement(UIElement ^ element);
static AutomationPeer CreatePeerForElement(UIElement const& element);
public static AutomationPeer CreatePeerForElement(UIElement element);
function createPeerForElement(element)
Public Shared Function CreatePeerForElement (element As UIElement) As AutomationPeer
参数
返回
FrameworkElementAutomationPeer。
示例
如果正在编写从某个组件部件转发对等信息的对等方,则 CreatePeerForElement 非常有用,因为它是组件部件,可以按照对等的 GetPatternCore 实现中请求的方式实现模式。 例如,如果控件的main组件部件之一是 ScrollViewer,则控件本身可能具有一些其他功能,并且不会直接滚动。 但对等方可能仍希望报告对 滚动 模式的支持,并提供对等方,以便客户端可以与滚动部件的自动化模式交互。
protected override object GetPatternCore(PatternInterface patternInterface)
{
if (patternInterface == PatternInterface.Scroll)
{
ItemsControl owner = (ItemsControl) base.Owner;
UIElement itemsHost = owner.ItemsHost;
ScrollViewer element = null;
while (itemsHost != owner)
{
itemsHost = VisualTreeHelper.GetParent(itemsHost) as UIElement;
element = itemsHost as ScrollViewer;
if (element != null)
{
break;
}
}
if (element != null)
{
AutomationPeer peer = FrameworkElementAutomationPeer.CreatePeerForElement(element);
if ((peer != null) && (peer is IScrollProvider))
{
return (IScrollProvider) peer;
}
}
}
return base.GetPatternCore(patternInterface);
}
注解
CreatePeerForElement 是自定义控件代码用来返回操作对等实例的帮助程序类。 使用返回的对等,可以从同样触发常规控制逻辑事件或更改控件属性的同一例程内触发自动化事件。 或者,可以编写自己的帮助程序方法来执行此操作,并从控件逻辑调用。
创建的 FrameworkElementAutomationPeer 将保留在内存中,直到销毁关联的 UIElement 。 FrameworkElementAutomationPeer 的同一实例从对 CreatePeerForElement 的后续调用和对引用同一元素实例的 FromElement 的调用中返回。
返回的对等类型由相关 UIElement(通常是 Control)的 OnCreateAutomationPeer 实现决定。 如果 元素 类型的类代码未实现 OnCreateAutomationPeer,则不创建对等,并且 CreatePeerForElement 返回 null。 最佳做法是在调用 CreatePeerForElement 后始终检查 null,因为有许多Windows 运行时元素没有 OnCreateAutomationPeer 实现。 例如,ContentControl 默认没有对等,除非它是自定义的,或者是派生Windows 运行时控件。
CreatePeerForElement 的行为与 FromElement 基本相同。
即使由于某种原因 CreateAutomationPeer 系统逻辑尚未在 元素 目标上运行,CreatePeerForElement 也可以返回对等方。 它将在内部调用相同的 CreateAutomationPeer 逻辑以获取对等方。