AutomationElement.GetUpdatedCache(CacheRequest) AutomationElement.GetUpdatedCache(CacheRequest) AutomationElement.GetUpdatedCache(CacheRequest) AutomationElement.GetUpdatedCache(CacheRequest) Method

Definition

Ruft ein neues AutomationElement mit einem aktualisierten Cache ab.Retrieves a new AutomationElement with an updated cache.

public:
 System::Windows::Automation::AutomationElement ^ GetUpdatedCache(System::Windows::Automation::CacheRequest ^ request);
public System.Windows.Automation.AutomationElement GetUpdatedCache (System.Windows.Automation.CacheRequest request);
member this.GetUpdatedCache : System.Windows.Automation.CacheRequest -> System.Windows.Automation.AutomationElement
Public Function GetUpdatedCache (request As CacheRequest) As AutomationElement

Parameter

request
CacheRequest CacheRequest CacheRequest CacheRequest

Die Muster und Eigenschaften, die in den aktualisierten Cache eingeschlossen werden sollen.The patterns and properties to include in the updated cache.

Gibt zurück

Ein neues AutomationElement, das über einen aktualisierten Cache verfügt.A new AutomationElement that has an updated cache.

Beispiele

Im folgenden Beispiel wird veranschaulicht, wie ein Cache aktualisiert werden kann, wenn die Auswahl in einem Kombinations Feld geändert wird.The following example demonstrates how a cache might be updated whenever the selection in a combo box changes.

CacheRequest comboCacheRequest;
AutomationEventHandler selectHandler;
AutomationElement elementCombo;
AutomationElement selectedItem;

/// <summary>
/// Retrieves a combo box automation element, caches a pattern and a property,
/// and registers the event handler.
/// </summary>
/// <param name="elementAppWindow">The element for the parent window.</param>
private void SetupComboElement(AutomationElement elementAppWindow)
{
    // Set up the CacheRequest.
    comboCacheRequest = new CacheRequest();
    comboCacheRequest.Add(SelectionPattern.Pattern);
    comboCacheRequest.Add(SelectionPattern.SelectionProperty);
    comboCacheRequest.Add(AutomationElement.NameProperty);
    comboCacheRequest.TreeScope = TreeScope.Element | TreeScope.Descendants;

    // Activate the CacheRequest and get the element.
    using (comboCacheRequest.Activate())
    {
        // Load the combo box element and cache the specified properties and patterns.
        Condition propCondition = new PropertyCondition(
            AutomationElement.AutomationIdProperty, "comboBox1", PropertyConditionFlags.IgnoreCase);
        elementCombo = elementAppWindow.FindFirst(TreeScope.Descendants, propCondition);
    }

    // Get the list from the combo box.
    Condition propCondition1 = new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.List);
    AutomationElement listElement = elementCombo.FindFirst(TreeScope.Children, propCondition1);

    // Register for ElementSelectedEvent on list items.
    if (listElement != null)
    {
        Automation.AddAutomationEventHandler(SelectionItemPattern.ElementSelectedEvent, listElement,
            TreeScope.Children, selectHandler = new AutomationEventHandler(OnListItemSelect));
    }
}

/// <summary>
/// Handle ElementSelectedEvent on items in the combo box.
/// </summary>
/// <param name="src">Object that raised the event.</param>
/// <param name="e">Event arguments.</param>
private void OnListItemSelect(object src, AutomationEventArgs e)
{
    // Update the cache.
    AutomationElement updatedElement = elementCombo.GetUpdatedCache(comboCacheRequest);

    // Retrieve the pattern and the selected item from the cache. This code is here only to 
    // demonstrate that the current selection can now be retrieved from the cache. In an application,
    // this would be done only when the information was needed.
    SelectionPattern pattern = updatedElement.GetCachedPattern(SelectionPattern.Pattern) as SelectionPattern;
    AutomationElement[] selectedItems = pattern.Cached.GetSelection();
    selectedItem = selectedItems[0];
}
Private comboCacheRequest As CacheRequest
Private selectHandler As AutomationEventHandler
Private elementCombo As AutomationElement
Private selectedItem As AutomationElement


''' <summary>
''' Retrieves a combo box automation element, caches a pattern and a property,
''' and registers the event handler.
''' </summary>
''' <param name="elementAppWindow">The element for the parent window.</param>
Private Sub SetupComboElement(ByVal elementAppWindow As AutomationElement)
    ' Set up the CacheRequest.
    comboCacheRequest = New CacheRequest()
    comboCacheRequest.Add(SelectionPattern.Pattern)
    comboCacheRequest.Add(SelectionPattern.SelectionProperty)
    comboCacheRequest.Add(AutomationElement.NameProperty)
    comboCacheRequest.TreeScope = TreeScope.Element Or TreeScope.Descendants

    ' Activate the CacheRequest and get the element.
    Using comboCacheRequest.Activate()
        ' Load the combo box element and cache the specified properties and patterns.
        Dim propCondition As New PropertyCondition(AutomationElement.AutomationIdProperty, "comboBox1", PropertyConditionFlags.IgnoreCase)
        elementCombo = elementAppWindow.FindFirst(TreeScope.Descendants, propCondition)

        ' Get the list from the combo box.
        Dim propCondition1 As New PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.List)
        Dim listElement As AutomationElement = elementCombo.FindFirst(TreeScope.Children, propCondition1)

        ' Register for ElementSelectedEvent on list items.
        selectHandler = New AutomationEventHandler(AddressOf OnListItemSelect)
        If (listElement IsNot Nothing) Then
            Automation.AddAutomationEventHandler(SelectionItemPattern.ElementSelectedEvent, listElement, _
            TreeScope.Children, selectHandler)
        End If
    End Using

End Sub


''' <summary>
''' Handle ElementSelectedEvent on items in the combo box.
''' </summary>
''' <param name="src">Object that raised the event.</param>
''' <param name="e">Event arguments.</param>
Private Sub OnListItemSelect(ByVal src As Object, ByVal e As AutomationEventArgs)
    ' Update the cache.
    Dim updatedElement As AutomationElement = elementCombo.GetUpdatedCache(comboCacheRequest)

    ' Retrieve the pattern and the selected item from the cache. This code is here only to 
    ' demonstrate that the current selection can now be retrieved from the cache. In an application,
    ' this would be done only when the information was needed.
    Dim pattern As SelectionPattern = _
        DirectCast(updatedElement.GetCachedPattern(SelectionPattern.Pattern), SelectionPattern)
    Dim selectedItems As AutomationElement() = pattern.Cached.GetSelection()
    selectedItem = selectedItems(0)

End Sub

Hinweise

Das ursprüngliche AutomationElement ist unverändert.The original AutomationElement is unchanged. GetUpdatedCacheGibt einen neuen AutomationElement-Wert zurück, der auf Benutzeroberfläche (User Interface, UI)user interface (UI) denselben verweist und über RuntimeIdPropertydenselben verfügt.GetUpdatedCache returns a new AutomationElement, that refers to the same Benutzeroberfläche (User Interface, UI)user interface (UI) and has the same RuntimeIdProperty.

Gilt für:

Siehe auch