AutomationElement.CachedChildren Propriedade
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Obtém os elementos filho armazenados em cache deste AutomationElement.
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
Valor da propriedade
A coleção de elementos filho. Essa coleção poderá ser vazia se o elemento não tiver filhos.
Exceções
A interface do usuário do AutomationElement não existe mais.
Não foi realizada nenhuma solicitação para armazenar em cache os filhos deste elemento.
Exemplos
No exemplo a seguir, um elemento de caixa de listagem é obtido do elemento de janela pai enquanto um CacheRequest está ativo e TreeScope é Children. As propriedades especificadas dos elementos filho (ou seja, os itens de lista) são armazenadas no cache e podem ser recuperadas da CachedChildren caixa de listagem.
/// <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
Comentários
A exibição da coleção retornada é determinada pela TreeFilter condição do CacheRequest que estava ativo quando esse AutomationElement objeto foi obtido.
Os filhos serão armazenados em cache somente se o CacheRequest escopo do incluído Subtree, Childrenou Descendants.
Se os CacheRequest filhos especificados forem armazenados em cache nesse nível, mas não houver filhos, o valor dessa propriedade será 0. No entanto, se nenhuma solicitação foi feita para armazenar crianças em cache nesse nível, uma tentativa de recuperar a propriedade gerará uma exceção.