Proprietà di automazione interfaccia utente per i client

Nota

Questa documentazione è destinata agli sviluppatori .NET Framework che desiderano utilizzare le classi di Automazione interfaccia utente gestite definite nello spazio dei nomi System.Windows.Automation. Per informazioni aggiornate su Automazione interfaccia utente, vedere API di automazione di Windows: Automazione interfaccia utente.

In questa panoramica sono presentate le proprietà di Automazione interfaccia utente così come vengono esposte nelle applicazioni client di automazione interfaccia utente.

Le proprietà sugli oggetti AutomationElement contengono informazioni sugli elementi dell'interfaccia, in genere i controlli. Le proprietà di un oggetto AutomationElement sono generiche, ovvero non sono specifiche di un tipo di controllo. Molte di queste proprietà sono esposte nella struttura AutomationElement.AutomationElementInformation .

Anche i pattern di controllo hanno proprietà. Le proprietà dei pattern di controllo sono specifiche del modello. Ad esempio, ScrollPattern dispone di proprietà che forniscono a un'applicazione client informazioni sulla possibilità di scorrere una finestra in senso verticale o orizzontale, sulle dimensioni correnti della visualizzazione e sulle posizioni di scorrimento. I pattern di controllo espongono tutte le proprietà tramite una struttura, ad esempio ScrollPattern.ScrollPatternInformation.

Le proprietà di Automazione interfaccia utente sono di sola lettura. Per impostare le proprietà di un controllo, è necessario usare i metodi del pattern di controllo appropriato. Ad esempio, usare il metodo Scroll per modificare i valori di posizione di una finestra a scorrimento.

Per migliorare le prestazioni, è possibile memorizzare nella cache i valori di proprietà di controlli e pattern di controllo quando vengono recuperati oggetti AutomationElement . Per altre informazioni, vedere Memorizzazione nella cache nei client di Automazione interfaccia utente.

ID di proprietà

Gli identificatori (ID) di proprietà sono valori univoci e costanti incapsulati in oggetti AutomationProperty. Le applicazioni client di Automazione interfaccia utente ottengono questi ID dalla classe AutomationElement o dalla classe di criterio di controllo appropriata, ad esempio ScrollPattern. I provider di automazione interfaccia utente li ottengono da AutomationElementIdentifiers o da una delle classi di identificatori di pattern di controllo, ad esempio ScrollPatternIdentifiers.

La proprietà Id numerica di un oggetto AutomationProperty viene usata dai provider per identificare le proprietà sulle quali vengono eseguite query nel metodo IRawElementProviderSimple.GetPropertyValue . In genere, non è necessario che le applicazioni client esaminino la proprietà Id. La proprietà ProgrammaticName viene usata solo a scopi di debug e diagnostica.

Condizioni della proprietà

Gli ID di proprietà vengono usati nella costruzione degli oggetti PropertyCondition impiegati per trovare gli oggetti AutomationElement. Ad esempio, può essere necessario trovare un oggetto AutomationElement con un determinato nome o tutti i controlli abilitati. Ogni PropertyCondition specifica un identificatore AutomationProperty e il valore a cui deve corrispondere la proprietà.

Per altre informazioni, vedere gli argomenti di riferimento riportati di seguito:

Recupero di proprietà

Alcune proprietà di AutomationElement e tutte le proprietà di una classe di pattern di controllo sono esposte come proprietà annidate della proprietà Current o Cached dell'oggetto AutomationElement o dell'oggetto del pattern di controllo.

Inoltre, qualsiasi proprietà di AutomationElement o del pattern di controllo, inclusa una proprietà non disponibile nella struttura Cached o Current , può essere recuperata usando uno dei metodi seguenti:

Questi metodi offrono prestazioni leggermente superiori, oltre all'accesso alla gamma completa di proprietà.

Nell'esempio di codice seguente sono mostrate due modalità di recupero di una proprietà su un oggetto AutomationElement.

// elementList is an AutomationElement.

// The following two calls are equivalent.
string name = elementList.Current.Name;
name = elementList.GetCurrentPropertyValue(AutomationElement.NameProperty) as string;
' elementList is an AutomationElement.
' The following two calls are equivalent.
Dim name As String = elementList.Current.Name
name = CStr(elementList.GetCurrentPropertyValue(AutomationElement.NameProperty))

Per recuperare proprietà di pattern di controllo supportate dall'oggetto AutomationElement, non è necessario recuperare l'oggetto del pattern di controllo. È sufficiente passare al metodo uno degli identificatori di proprietà di modello.

Nell'esempio di codice seguente sono mostrate due modalità di recupero di una proprietà su un pattern di controllo.

// elementList is an AutomationElement representing a list box.
// Error-checking is omitted. Assume that elementList is known to support SelectionPattern.

SelectionPattern selectPattern =
    elementList.GetCurrentPattern(SelectionPattern.Pattern) as SelectionPattern;
bool isMultipleSelect = selectPattern.Current.CanSelectMultiple;

// The following call is equivalent to the one above.
isMultipleSelect = (bool)
    elementList.GetCurrentPropertyValue(SelectionPattern.CanSelectMultipleProperty);
' elementList is an AutomationElement representing a list box.
' Error-checking is omitted. Assume that elementList is known to support SelectionPattern.
Dim selectPattern As SelectionPattern = _
    DirectCast(elementList.GetCurrentPattern(SelectionPattern.Pattern), SelectionPattern)
Dim isMultipleSelect As Boolean = selectPattern.Current.CanSelectMultiple

' The following call is equivalent to the one above.
isMultipleSelect = CBool(elementList.GetCurrentPropertyValue(SelectionPattern.CanSelectMultipleProperty))

I metodi Get restituiscono un oggetto Object. L'applicazione deve eseguire il cast dell'oggetto restituito al tipo corretto prima di usare il valore.

Valori di proprietà predefiniti

Se un provider di Automazione interfaccia utente non implementa una proprietà, il sistema di Automazione interfaccia utente è in grado di fornire un valore predefinito. Ad esempio, se il provider per un controllo non supporta la proprietà identificata da HelpTextProperty, Automazione interfaccia utente restituisce una stringa vuota. Analogamente, se il provider non supporta la proprietà identificata da IsDockPatternAvailableProperty, Automazione interfaccia utente restituisce false.

È possibile modificare questo comportamento usando gli overload dei metodi AutomationElement.GetCachedPropertyValue e AutomationElement.GetCurrentPropertyValue . Quando si specifica true come secondo parametro, Automazione interfaccia utente non restituisce un valore predefinito e restituisce il valore speciale NotSupported.

Nel codice di esempio riportato di seguito si tenta di recuperare una proprietà da un elemento e, se la proprietà non è supportata, viene usato in alternativa un valore definito dall'applicazione.

// elementList is an AutomationElement.
object help = elementList.GetCurrentPropertyValue(AutomationElement.HelpTextProperty, true);
if (help == AutomationElement.NotSupported)
{
    help = "No help available";
}
string helpText = (string)help;
' elementList is an AutomationElement.
Dim help As Object = elementList.GetCurrentPropertyValue(AutomationElement.HelpTextProperty, True)
If help Is AutomationElement.NotSupported Then
    help = "No help available"
End If
Dim helpText As String = CStr(help)

Per individuare le proprietà supportate da un elemento, usare il metodo GetSupportedProperties. Restituisce una matrice di identificatori AutomationProperty .

Eventi di modifica delle proprietà

Quando viene modificato un valore di proprietà su un oggetto AutomationElement o un pattern di controllo, viene generato un evento. Un'applicazione può sottoscrivere tali eventi chiamando il metodo AddAutomationPropertyChangedEventHandler, fornendo una matrice di identificatori AutomationProperty come ultimo parametro per specificare le proprietà di interesse.

Nell'oggetto AutomationPropertyChangedEventHandler, è possibile identificare la proprietà modificata controllando il membro Property degli argomenti dell'evento. Gli argomenti contengono anche i valori obsoleti e nuovi della proprietà di Automazione interfaccia utente modificata. Questi valori sono di tipo Object ed è necessario eseguirne il cast al tipo corretto prima di usarli.

Proprietà AutomationElement aggiuntiva

Oltre alle strutture delle proprietà Current e Cached , l'oggetto AutomationElement ha le proprietà seguenti, recuperate tramite semplici funzioni di accesso della proprietà.

Proprietà Descrizione
CachedChildren Insieme di oggetti AutomationElement figlio presenti nella cache.
CachedParent Oggetto AutomationElement padre presente nella cache.
FocusedElement (Proprietà statica) Oggetto AutomationElement con lo stato attivo per l'input.
RootElement (Proprietà statica) Oggetto AutomationElementradice.

Vedi anche