AutomationElement.CachedChildren Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ruft die zwischengespeicherten untergeordneten Elemente von diesem AutomationElement ab.
public:
property System::Windows::Automation::AutomationElementCollection ^ CachedChildren { System::Windows::Automation::AutomationElementCollection ^ get(); };
public System.Windows.Automation.AutomationElementCollection CachedChildren { get; }
member this.CachedChildren : System.Windows.Automation.AutomationElementCollection
Public ReadOnly Property CachedChildren As AutomationElementCollection
Eigenschaftswert
Die Auflistung von untergeordneten Elementen. Diese Auflistung kann leer sein, wenn das Element über keine untergeordneten Elemente verfügt.
Ausnahmen
Die Benutzeroberfläche für das AutomationElement ist nicht mehr vorhanden.
Es wurde keine Anforderung ausgeführt, die untergeordneten Elemente dieses Elements zwischenzuspeichern.
Beispiele
Im folgenden Beispiel wird ein Listenfeldelement aus dem übergeordneten Fensterelement abgerufen, während ein CacheRequest aktiv ist und TreeScope ist Children. Die angegebenen Eigenschaften der untergeordneten Elemente (d. h. die Listenelemente) werden im Cache gespeichert und können aus dem CachedChildren Listenfeld abgerufen werden.
/// <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
Hinweise
Die Ansicht der zurückgegebenen Auflistung wird durch die TreeFilter Bedingung der bestimmt, die CacheRequest aktiv war, als dieses AutomationElement Objekt abgerufen wurde.
Untergeordnete Elemente werden nur zwischengespeichert, wenn der Bereich des CacheRequest enthaltenen Subtree, Childrenoder enthalten Descendantsist.
Wenn angegeben CacheRequest wird, dass untergeordnete Elemente auf dieser Ebene zwischengespeichert werden sollen, aber keine untergeordneten Elemente vorhanden sind, ist der Wert dieser Eigenschaft 0. Wenn jedoch keine Anforderung zum Zwischenspeichern von untergeordneten Elementen auf dieser Ebene gestellt wurde, löst ein Versuch, die Eigenschaft abzurufen, eine Ausnahme aus.