Export (0) Print
Expand All
This topic has not yet been rated - Rate this topic

Get Supported UI Automation Control Patterns

NoteNote

This documentation is intended for .NET Framework developers who want to use the managed UI Automation classes defined in the System.Windows.Automation namespace. For the latest information about UI Automation, see Windows Automation API: UI Automation.

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.");
    }
    listElement.SetFocus();
    Condition cond = new PropertyCondition(
        AutomationElement.NameProperty, itemText, PropertyConditionFlags.IgnoreCase);
    AutomationElement elementItem = listElement.FindFirst(TreeScope.Children, cond);
    if (elementItem != null)
    {
        SelectionItemPattern pattern;
        try
        {
            pattern = elementItem.GetCurrentPattern(SelectionItemPattern.Pattern) as SelectionItemPattern;
        }
        catch (InvalidOperationException ex)
        {
            Console.WriteLine(ex.Message);  // Most likely "Pattern not supported."
            return;
        }
        pattern.Select();
    }
}


Did you find this helpful?
(1500 characters remaining)
Thank you for your feedback

Community Additions

ADD
Show:
© 2014 Microsoft. All rights reserved.