AutomationElement.CachedParent Właściwość
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Pobiera buforowany element nadrzędny tego AutomationElementelementu .
public:
property System::Windows::Automation::AutomationElement ^ CachedParent { System::Windows::Automation::AutomationElement ^ get(); };
public System.Windows.Automation.AutomationElement CachedParent { get; }
member this.CachedParent : System.Windows.Automation.AutomationElement
Public ReadOnly Property CachedParent As AutomationElement
Wartość właściwości
Element nadrzędny. Wartość zwracana może być null
, jeśli określony element nie ma elementu nadrzędnego — na przykład jeśli ten element jest węzłem głównym.
Wyjątki
Żaden element nadrzędny nie jest buforowany.
Interfejs użytkownika dla obiektu AutomationElement już nie istnieje.
Przykłady
W poniższym przykładzie Name właściwości pola listy i jego elementów listy są buforowane. Element pola listy jest dostępny we CachedParent właściwości każdego elementu elementu listy.
/// <summary>
/// Gets a list box element and caches the Name property of its children (the list items).
/// </summary>
/// <param name="elementMain">The UI Automation element for the parent window.</param>
void CachePropertiesWithScope(AutomationElement elementMain)
{
AutomationElement elementList;
// Set up the CacheRequest.
CacheRequest cacheRequest = new CacheRequest();
cacheRequest.Add(AutomationElement.NameProperty);
cacheRequest.TreeScope = TreeScope.Element | TreeScope.Children;
// Activate the CacheRequest and get the element. Note that the scope of the CacheRequest
// is in relation to the object being retrieved: the list box and its children are
// cached, not the main window and its children.
using (cacheRequest.Activate())
{
// Load the list element and cache the specified properties for its descendants.
Condition cond = new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.List);
elementList = elementMain.FindFirst(TreeScope.Children, cond);
}
if (elementList == null) return;
// The following illustrates that the children of the list are in the cache.
foreach (AutomationElement listItem in elementList.CachedChildren)
{
Console.WriteLine(listItem.Cached.Name);
}
// The following call raises an exception, because the IsEnabled property was not cached.
/*** Console.WriteLine(listItem.Cached.IsEnabled); ***/
// The following illustrates that because the list box itself was cached, it is now
// available as the CachedParent of each list item.
AutomationElement child = elementList.CachedChildren[0];
Console.WriteLine(child.CachedParent.Cached.Name);
}
''' <summary>
''' Gets a list box element and caches the Name property of its children (the list items).
''' </summary>
''' <param name="elementMain">The UI Automation element for the parent window.</param>
Sub CachePropertiesWithScope(ByVal elementMain As AutomationElement)
Dim elementList As AutomationElement
' Set up the CacheRequest.
Dim cacheRequest As New CacheRequest()
cacheRequest.Add(AutomationElement.NameProperty)
cacheRequest.TreeScope = TreeScope.Element Or TreeScope.Children
' Activate the CacheRequest and get the element. Note that the scope of the CacheRequest
' is in relation to the object being retrieved: the list box and its children are
' cached, not the main window and its children.
Using cacheRequest.Activate()
' Load the list element and cache the specified properties for its descendants.
Dim myCondition As New PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.List)
elementList = elementMain.FindFirst(TreeScope.Children, myCondition)
If elementList Is Nothing Then
Return
End If
' The following illustrates that the children of the list are in the cache.
Dim listItem As AutomationElement
For Each listItem In elementList.CachedChildren
Console.WriteLine(listItem.Cached.Name)
Next listItem
' The following call raises an exception, because the IsEnabled property was not cached.
'** Console.WriteLine(listItem.Cached.IsEnabled) **
' The following illustrates that because the list box itself was cached, it is now
' available as the CachedParent of each list item.
Dim child As AutomationElement = elementList.CachedChildren(0)
Console.WriteLine(child.CachedParent.Cached.Name)
End Using
End Sub