Właściwości automatyzacji interfejsu użytkownika dla klientów

Uwaga

Ta dokumentacja jest przeznaczona dla deweloperów programu .NET Framework, którzy chcą używać zarządzanych klas automatyzacja interfejsu użytkownika zdefiniowanych w System.Windows.Automation przestrzeni nazw. Aby uzyskać najnowsze informacje na temat automatyzacja interfejsu użytkownika, zobacz Interfejs API usługi Windows Automation: automatyzacja interfejsu użytkownika.

W tym omówieniu przedstawiono automatyzacja interfejsu użytkownika właściwości, ponieważ są one widoczne dla aplikacji klienckich automatyzacja interfejsu użytkownika.

Właściwości obiektów AutomationElement zawierają informacje o elementach interfejsu użytkownika, zwykle kontrolki. Właściwości elementu AutomationElement są ogólne, czyli nie specyficzne dla typu kontrolki. Wiele z tych właściwości jest uwidocznionych w AutomationElement.AutomationElementInformation strukturze.

Wzorce kontrolek mają również właściwości. Właściwości wzorców kontrolek są specyficzne dla wzorca. Na przykład ma właściwości, które umożliwiają aplikacji klienckiej wykrycie, ScrollPattern czy okno jest w pionie, czy w poziomie, oraz jakie są bieżące rozmiary widoku i położenia przewijania. Wzorce sterujące uwidaczniają wszystkie ich właściwości za pośrednictwem struktury; na przykład ScrollPattern.ScrollPatternInformation.

automatyzacja interfejsu użytkownika właściwości są tylko do odczytu. Aby ustawić właściwości kontrolki, należy użyć metod odpowiedniego wzorca kontrolki. Na przykład użyj polecenia Scroll , aby zmienić wartości położenia okna przewijania.

Aby zwiększyć wydajność, wartości właściwości kontrolek i wzorców kontrolek mogą być buforowane podczas AutomationElement pobierania obiektów. Aby uzyskać więcej informacji, zobacz Buforowanie w automatyzacja interfejsu użytkownika Clients.

Identyfikatory właściwości

Identyfikatory właściwości są unikatowe, stałe wartości, które są hermetyzowane w AutomationProperty obiektach. automatyzacja interfejsu użytkownika aplikacje klienckie uzyskują te identyfikatory z AutomationElement klasy lub z odpowiedniej klasy wzorca sterowania, na przykład ScrollPattern. automatyzacja interfejsu użytkownika dostawcy pobierają je z AutomationElementIdentifiers lub z jednej z klas identyfikatorów wzorców kontrolek, takich jak ScrollPatternIdentifiers.

Wartość liczbowa Id elementu AutomationProperty jest używana przez dostawców do identyfikowania właściwości, których dotyczy zapytanie w metodzie IRawElementProviderSimple.GetPropertyValue . Ogólnie rzecz biorąc, aplikacje klienckie nie muszą badać . Id Element ProgrammaticName jest używany tylko do celów debugowania i diagnostyki.

Warunki właściwości

Identyfikatory właściwości są używane w konstruowaniu obiektów używanych do znajdowania PropertyConditionAutomationElement obiektów. Na przykład możesz znaleźć element AutomationElement , który ma określoną nazwę lub wszystkie włączone kontrolki. Każdy PropertyCondition określa AutomationProperty identyfikator i wartość, która musi być zgodna z właściwością.

Aby uzyskać więcej informacji, zobacz następujące tematy referencyjne:

Pobieranie właściwości

Niektóre właściwości AutomationElement i wszystkie właściwości klasy wzorca kontrolki są widoczne jako zagnieżdżone właściwości Current obiektu CachedAutomationElement wzorca lub lub.

Ponadto każda AutomationElement właściwość wzorca lub kontrolki, w tym właściwość, która nie jest dostępna w Cached strukturze lub Current , można pobrać przy użyciu jednej z następujących metod:

Te metody oferują nieco lepszą wydajność, a także dostęp do pełnego zakresu właściwości.

Poniższy przykład kodu przedstawia dwa sposoby pobierania właściwości na obiekcie 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))

Aby pobrać właściwości wzorców kontrolek obsługiwanych przez AutomationElementprogram , nie trzeba pobierać obiektu wzorca kontrolki. Wystarczy przekazać jeden z identyfikatorów właściwości wzorca do metody .

Poniższy przykład kodu przedstawia dwa sposoby pobierania właściwości we wzorcu kontrolki.

// 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))

Metody Get zwracają wartość Object. Aplikacja musi rzutować zwrócony obiekt do odpowiedniego typu przed użyciem wartości.

Domyślne wartości właściwości

Jeśli dostawca automatyzacja interfejsu użytkownika nie implementuje właściwości, system automatyzacja interfejsu użytkownika może podać wartość domyślną. Jeśli na przykład dostawca kontrolki nie obsługuje właściwości zidentyfikowanej przez HelpTextPropertyprogram , automatyzacja interfejsu użytkownika zwraca pusty ciąg. Podobnie, jeśli dostawca nie obsługuje właściwości zidentyfikowane przez IsDockPatternAvailableProperty, automatyzacja interfejsu użytkownika zwraca wartość false.

To zachowanie można zmienić przy użyciu AutomationElement.GetCachedPropertyValue przeciążeń metod i AutomationElement.GetCurrentPropertyValue . Po określeniu true jako drugiego parametru automatyzacja interfejsu użytkownika nie zwraca wartości domyślnej, ale zamiast tego zwraca wartość NotSupportedspecjalną .

Poniższy przykładowy kod próbuje pobrać właściwość z elementu, a jeśli właściwość nie jest obsługiwana, zostanie użyta wartość zdefiniowana przez aplikację.

// 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)

Aby dowiedzieć się, jakie właściwości są obsługiwane przez element, użyj polecenia GetSupportedProperties. Zwraca tablicę identyfikatorów AutomationProperty .

Zdarzenia zmienione właściwości

Gdy wartość właściwości we wzorcu kontrolki AutomationElement lub zmieni się, jest zgłaszane zdarzenie. Aplikacja może subskrybować takie zdarzenia, wywołując metodę AddAutomationPropertyChangedEventHandler, podając tablicę AutomationProperty identyfikatorów jako ostatni parametr w celu określenia właściwości zainteresowania.

W elemencie AutomationPropertyChangedEventHandlermożna zidentyfikować właściwość, która uległa zmianie, sprawdzając Property element członkowski argumentów zdarzenia. Argumenty zawierają również stare i nowe wartości właściwości automatyzacja interfejsu użytkownika, która uległa zmianie. Te wartości są typu Object i muszą być rzutowane do poprawnego typu przed ich zastosowaniem.

Dodatkowe właściwości elementu AutomationElement

Oprócz Current struktur AutomationElement właściwości i Cached mają następujące właściwości, które są pobierane za pomocą prostych metod dostępu właściwości.

Właściwości opis
CachedChildren Kolekcja obiektów podrzędnych AutomationElement znajdujących się w pamięci podręcznej.
CachedParent AutomationElement Obiekt nadrzędny znajdujący się w pamięci podręcznej.
FocusedElement (Właściwość statyczna) Element AutomationElement , który ma fokus wejściowy.
RootElement (Właściwość statyczna) Katalog główny AutomationElement.

Zobacz też