Get Supported UI Automation Control Patterns

This topic shows how to retrieve control pattern objects from UI Automation elements.

Obtain All Control Patterns

  1. Get the AutomationElement whose control patterns you are interested in.

  2. Call GetSupportedPatterns to get all control patterns from the element.

Caution noteCaution:

It is strongly recommended that a client not use GetSupportedPatterns. Performance can be severely affected as this method calls GetCurrentPattern internally for each existing control pattern. If possible, a client should call GetCurrentPattern for the key patterns of interest.

Obtain a Specific Control Pattern

  1. Get the AutomationElement whose control patterns you are interested in.

  2. Call GetCurrentPattern or TryGetCurrentPattern to query for a specific pattern. These methods are similar, but if the pattern is not found, GetCurrentPattern raises an exception, and TryGetCurrentPattern returns false.


The following example retrieves an AutomationElement for a list item and obtains a SelectionItemPattern from that element.

/// <summary>
/// Sets the focus to a list and selects a string item in that list.
/// </summary>
/// <param name="listElement">The list element.</param>
/// <param name="itemText">The text to select.</param>
/// <remarks>
/// This deselects any currently selected items. To add the item to the current selection 
/// in a multiselect list, use AddToSelection instead of Select.
/// </remarks>
public void SelectListItem(AutomationElement listElement, String itemText)
    if ((listElement == null) || (itemText == ""))
        throw new ArgumentException("Argument cannot be null or empty.");
    Condition cond = new PropertyCondition(
        AutomationElement.NameProperty, itemText, PropertyConditionFlags.IgnoreCase);
    AutomationElement elementItem = listElement.FindFirst(TreeScope.Children, cond);
    if (elementItem != null)
        SelectionItemPattern pattern;
            pattern = elementItem.GetCurrentPattern(SelectionItemPattern.Pattern) as SelectionItemPattern;
        catch (InvalidOperationException ex)
            Console.WriteLine(ex.Message);  // Most likely "Pattern not supported."

See Also

Community Additions