Export (0) Print
Expand All

AutomationElement.GetCachedPattern Method

Retrieves the specified pattern from the cache of this AutomationElement.

Namespace:  System.Windows.Automation
Assembly:  UIAutomationClient (in UIAutomationClient.dll)

public Object GetCachedPattern(
	AutomationPattern pattern
)

Parameters

pattern
Type: System.Windows.Automation.AutomationPattern

The identifier of the pattern to retrieve.

Return Value

Type: System.Object
An object representing the specified pattern. If there are no matching patterns, null is returned.

ExceptionCondition
InvalidOperationException

The requested pattern is not in the cache or is not supported by the element.

ElementNotAvailableException

The UI for the AutomationElement no longer exists.

GetCachedPattern retrieves the specified pattern from the cache. To retrieve the current object for the specified pattern, call GetCurrentPattern.

This method throws an exception if the requested pattern was not previously cached.

The following example shows how to cache and retrieve a pattern.

/// <summary> 
/// Caches and retrieves properties for a list item by using CacheRequest.Push. 
/// </summary> 
/// <param name="autoElement">Element from which to retrieve a child element.</param>
/// <remarks> 
/// This code demonstrates various aspects of caching. It is not intended to be  
/// an example of a useful method. 
/// </remarks> 
private void CachePropertiesByPush(AutomationElement elementList)
{
    // Set up the request.
    CacheRequest cacheRequest = new CacheRequest();

    // Do not get a full reference to the cached objects, only to their cached properties and patterns.
    cacheRequest.AutomationElementMode = AutomationElementMode.None;

    // Cache all elements, regardless of whether they are control or content elements.
    cacheRequest.TreeFilter = Automation.RawViewCondition;

    // Property and pattern to cache.
    cacheRequest.Add(AutomationElement.NameProperty);
    cacheRequest.Add(SelectionItemPattern.Pattern);

    // Activate the request.
    cacheRequest.Push();

    // Obtain an element and cache the requested items.
    Condition cond = new PropertyCondition(AutomationElement.IsSelectionItemPatternAvailableProperty, true);
    AutomationElement elementListItem = elementList.FindFirst(TreeScope.Children, cond);

    // At this point, you could call another method that creates a CacheRequest and calls Push/Pop. 
    // While that method was retrieving automation elements, the CacheRequest set in this method  
    // would not be active.  

    // Deactivate the request.
    cacheRequest.Pop();

    // Retrieve the cached property and pattern.
    String itemName = elementListItem.Cached.Name;
    SelectionItemPattern pattern = elementListItem.GetCachedPattern(SelectionItemPattern.Pattern) as SelectionItemPattern;

    // The following is an alternative way of retrieving the Name property.
    itemName = elementListItem.GetCachedPropertyValue(AutomationElement.NameProperty) as String;

    // This is yet another way, which returns AutomationElement.NotSupported if the element does 
    // not supply a value. If the second parameter is false, a default name is returned.
    object objName = elementListItem.GetCachedPropertyValue(AutomationElement.NameProperty, true);
    if (objName == AutomationElement.NotSupported)
    {
        itemName = "Unknown";
    }
    else
    {
        itemName = objName as String;
    }

    // The following call raises an exception, because only the cached properties are available,  
    //  as specified by cacheRequest.AutomationElementMode. If AutomationElementMode had its 
    //  default value (Full), this call would be valid. 
    /*** bool enabled = elementListItem.Current.IsEnabled; ***/
}

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

.NET Framework

Supported in: 3.5, 3.0

Community Additions

ADD
Show:
© 2014 Microsoft