FrameworkElementAutomationPeer.CreatePeerForElement(UIElement) 方法

定义

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,则控件本身可能具有一些其他功能,并且不会直接滚动。 但对等方可能仍希望报告对 Scroll 模式的支持,并提供一个对等方,以便客户端可以与滚动部件的自动化模式进行交互。

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 将保留在内存中,直到销毁关联的 UIElementFrameworkElementAutomationPeer 的同一实例从对 CreatePeerForElement 的后续调用和对引用同一元素实例的 FromElement 的调用返回。

返回的对等方的类型由相关 UIElementOnCreateAutomationPeer 实现确定,后者通常是控件。 如果 元素 类型的类代码未实现 OnCreateAutomationPeer,则不会创建对等,并且 CreatePeerForElement 返回 null。 作为最佳做法,在调用 CreatePeerForElement 后,应始终检查 null,因为有许多Windows 运行时元素没有 OnCreateAutomationPeer 实现。 例如,ContentControl 默认没有对等方,除非它是自定义的或更派生的Windows 运行时控件。

CreatePeerForElement 的行为与 FromElement 基本相同。

即使 CreateAutomationPeer 系统逻辑由于某种原因尚未在 元素 目标上运行,CreatePeerForElement 也可以返回对等方。 它将在内部调用相同的 CreateAutomationPeer 逻辑来获取对等方。

适用于

另请参阅