FrameworkElementAutomationPeer.CreatePeerForElement(UIElement) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Crea un objeto FrameworkElementAutomationPeer para el uiElement especificado.
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
Parámetros
- element
- UIElement
UiElement asociado a este FrameworkElementAutomationPeer.
Devoluciones
FrameworkElementAutomationPeer.
Ejemplos
CreatePeerForElement es útil si está escribiendo un elemento del mismo nivel que reenvía la información del mismo nivel desde una de sus partes de componente, ya que es la parte de componente que podría implementar un patrón tal como se solicita en la implementación getPatternCore del mismo nivel. Por ejemplo, si una de las partes principales del componente de un control es un ScrollViewer , el propio control puede tener alguna otra función y no se desplaza directamente. Pero es posible que el elemento del mismo nivel todavía quiera notificar la compatibilidad con un patrón Scroll y proporcionar un elemento del mismo nivel para que un cliente pueda interactuar con el patrón de automatización de la parte de desplazamiento.
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);
}
Comentarios
CreatePeerForElement es una clase auxiliar que usa el código de control personalizado para devolver la instancia del mismo nivel que actúa. Con el elemento del mismo nivel devuelto, puede desencadenar eventos de automatización desde las mismas rutinas que también activan los eventos lógicos de control general o las propiedades de control de cambios. O bien, puede escribir sus propios métodos auxiliares que lo hacen y se invocan desde la lógica de control.
FrameworkElementAutomationPeer creado permanece en memoria hasta que se destruye el UIElement asociado. La misma instancia de FrameworkElementAutomationPeer se devuelve desde llamadas posteriores a CreatePeerForElement y llama a FromElement que hacen referencia a la misma instancia de elemento .
El tipo del elemento del mismo nivel devuelto viene determinado por la implementación OnCreateAutomationPeer de uiElement pertinente, que suele ser un control. Si el código de clase del tipo de elemento no implementa OnCreateAutomationPeer, no se crea ningún elemento del mismo nivel y CreatePeerForElement devuelve null. Como procedimiento recomendado, siempre debe comprobar null después de llamar a CreatePeerForElement, ya que hay una serie de elementos de Windows Runtime que no tendrán una implementación de OnCreateAutomationPeer. Por ejemplo, un ContentControl no tiene un elemento del mismo nivel de forma predeterminada a menos que se personalice o sea un control de Windows Runtime más derivado.
CreatePeerForElement tiene básicamente el mismo comportamiento que FromElement.
CreatePeerForElement puede devolver el mismo nivel incluso si la lógica del sistema CreateAutomationPeer aún no se ha ejecutado en el destino del elemento por algún motivo. Invocará internamente la misma lógica CreateAutomationPeer para obtener el mismo nivel.