Automatyzacja interfejsu użytkownika a Microsoft Active Accessibility
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.
Microsoft Active Accessibility to wcześniejsze rozwiązanie do udostępniania aplikacji. Microsoft automatyzacja interfejsu użytkownika to nowy model ułatwień dostępu dla systemu Microsoft Windows i ma na celu zaspokojenie potrzeb produktów technologii pomocniczych i narzędzi do zautomatyzowanego testowania. automatyzacja interfejsu użytkownika oferuje wiele ulepszeń dotyczących aktywnych ułatwień dostępu.
W tym temacie opisano główne funkcje automatyzacja interfejsu użytkownika i wyjaśniono, jak te funkcje różnią się od aktywnych ułatwień dostępu.
Języki programowania
Aktywne ułatwienia dostępu są oparte na modelu obiektów składników (COM) z obsługą podwójnych interfejsów i dlatego programowalne w języku C/C++, Microsoft Visual Basic 6.0 i językach skryptów. automatyzacja interfejsu użytkownika (w tym bibliotekę dostawcy po stronie klienta dla standardowych kontrolek) jest napisana w kodzie zarządzanym, a aplikacje klienckie automatyzacja interfejsu użytkownika są najłatwiej programowane przy użyciu języka C# lub Visual Basic .NET. automatyzacja interfejsu użytkownika dostawcy, którzy są implementacjami interfejsów, mogą być pisani w kodzie zarządzanym lub w języku C/C++.
Obsługa w programie Windows Presentation Foundation
Windows Presentation Foundation (WPF) to nowy model tworzenia interfejsów użytkownika. Elementy WPF nie zawierają natywnej obsługi aktywnych ułatwień dostępu; obsługują one jednak automatyzacja interfejsu użytkownika, co obejmuje obsługę mostkowania dla klientów z aktywnymi ułatwieniami dostępu. Tylko klienci napisani specjalnie dla automatyzacja interfejsu użytkownika mogą w pełni korzystać z funkcji ułatwień dostępu WPF, takich jak obsługa sformatowanego tekstu.
Serwery i klienci
W obszarze Aktywne ułatwienia dostępu serwery i klienci komunikują się bezpośrednio, głównie za pośrednictwem implementacji IAccessible
serwera programu .
W automatyzacja interfejsu użytkownika podstawowa usługa leży między serwerem (nazywanym dostawcą) a klientem. Podstawowa usługa wykonuje wywołania interfejsów implementowanych przez dostawców i udostępnia dodatkowe usługi, takie jak generowanie unikatowych identyfikatorów środowiska uruchomieniowego dla elementów. Aplikacje klienckie używają funkcji biblioteki do wywoływania usługi automatyzacja interfejsu użytkownika.
automatyzacja interfejsu użytkownika dostawcy mogą udostępniać informacje klientom z aktywnymi ułatwieniami dostępu, a serwery z aktywnymi ułatwieniami dostępu mogą udostępniać informacje automatyzacja interfejsu użytkownika aplikacji klienckich. Jednak ze względu na to, że aktywne ułatwienia dostępu nie uwidaczniają tak dużej ilości informacji, jak automatyzacja interfejsu użytkownika, te dwa modele nie są w pełni zgodne.
Elementy interfejsu użytkownika
Aktywne ułatwienia dostępu przedstawiają elementy interfejsu IAccessible
użytkownika jako interfejs lub jako identyfikator podrzędny. Trudno jest porównać dwa IAccessible
wskaźniki, aby ustalić, czy odwołują się do tego samego elementu.
W automatyzacja interfejsu użytkownika każdy element jest reprezentowany jako AutomationElement obiekt. Porównanie odbywa się przy użyciu operatora równości lub Equals metody, z których oba porównują unikatowe identyfikatory środowiska uruchomieniowego elementów.
Widoki drzewa i nawigacja
Elementy interfejsu użytkownika na ekranie można postrzegać jako strukturę drzewa z pulpitem głównym, oknami aplikacji jako bezpośrednimi elementami podrzędnymi i elementami w aplikacjach jako elementami podrzędnymi.
W obszarze Aktywne ułatwienia dostępu wiele elementów automatyzacji, które są nieistotne dla użytkowników końcowych, są widoczne w drzewie. Aplikacje klienckie muszą przyjrzeć się wszystkim elementom, aby określić, które z nich mają znaczenie.
automatyzacja interfejsu użytkownika aplikacje klienckie widzą interfejs użytkownika za pośrednictwem filtrowanego widoku. Widok zawiera tylko interesujące elementy: te, które dają informacje użytkownikowi lub umożliwiają interakcję. Wstępnie zdefiniowane widoki tylko elementów kontrolek i dostępne są tylko elementy zawartości; ponadto aplikacje mogą definiować widoki niestandardowe. automatyzacja interfejsu użytkownika upraszcza zadanie opisywania interfejsu użytkownika dla użytkownika i pomagania użytkownikowi w interakcji z aplikacją.
Nawigacja między elementami w aktywnej dostępności jest albo przestrzenna (na przykład przejście do elementu znajdującego się po lewej stronie ekranu), logiczne (na przykład przejście do następnego elementu menu lub następny element w kolejności tabulatora w oknie dialogowym) lub hierarchiczne (na przykład przeniesienie pierwszego dziecka w kontenerze lub z elementu podrzędnego do elementu nadrzędnego). Hierarchiczna nawigacja jest skomplikowana przez fakt, że elementy podrzędne nie zawsze są obiektami, które implementują IAccessible
element .
W automatyzacja interfejsu użytkownika wszystkie elementy interfejsu użytkownika są AutomationElement obiektami obsługującymi te same podstawowe funkcje. (Z punktu widzenia dostawcy są to obiekty, które implementują interfejs dziedziczony z IRawElementProviderSimple.) Nawigacja jest głównie hierarchiczna: od rodziców do dzieci i od jednego rodzeństwa do następnego. (Nawigacja między elementami równorzędnymi ma element logiczny, ponieważ może to być zgodne z kolejnością tabulacji). Możesz przechodzić z dowolnego punktu początkowego przy użyciu dowolnego filtrowanego widoku drzewa przy użyciu TreeWalker klasy . Można również przejść do określonych elementów podrzędnych lub elementów potomnych przy użyciu poleceń FindFirst i FindAll. Na przykład bardzo łatwo jest pobrać wszystkie elementy w oknie dialogowym obsługującym określony wzorzec kontrolki.
Nawigacja w automatyzacja interfejsu użytkownika jest bardziej spójna niż w obszarze Aktywne ułatwienia dostępu. Niektóre elementy, takie jak listy rozwijane i okna podręczne, są wyświetlane dwa razy w drzewie Aktywne ułatwienia dostępu, a nawigacja z nich może mieć nieoczekiwane wyniki. W rzeczywistości nie można poprawnie zaimplementować aktywnej ułatwień dostępu dla kontrolki paska pomocniczego. automatyzacja interfejsu użytkownika umożliwia reparenting i repozycję, dzięki czemu element można umieścić w dowolnym miejscu w drzewie pomimo hierarchii nałożonej przez własność okien.
Role i typy kontrolek
Aktywne ułatwienia dostępu używają accRole
właściwości (IAccessible::get_actRole
), aby pobrać opis roli elementu w interfejsie użytkownika, na przykład ROLE_SYSTEM_SLIDER lub ROLE_SYSTEM_MENUITEM. Rola elementu jest główną wskazówką dla jego dostępnych funkcji. Interakcja z kontrolką jest osiągana przy użyciu stałych metod, takich jak IAccessible::accSelect
i IAccessible::accDoDefaultAction
. Interakcja między aplikacją kliencka a interfejsem użytkownika jest ograniczona do tego, co można zrobić za pośrednictwem usługi IAccessible
.
Natomiast automatyzacja interfejsu użytkownika w dużej mierze rozdziela typ kontrolki elementu (opisanego ControlType przez właściwość) z oczekiwanej funkcjonalności. Funkcjonalność jest określana przez wzorce sterowania obsługiwane przez dostawcę za pośrednictwem implementacji wyspecjalizowanych interfejsów. Wzorce sterowania można połączyć w celu opisania pełnego zestawu funkcji obsługiwanych przez określony element interfejsu użytkownika. Niektórzy dostawcy muszą obsługiwać określony wzorzec kontroli; na przykład dostawca pola wyboru musi obsługiwać wzorzec kontrolki Przełączanie. Inni dostawcy są zobowiązani do obsługi co najmniej jednego zestawu wzorców kontroli; na przykład przycisk musi obsługiwać przełącznik lub wywołanie. Nadal inni nie obsługują żadnych wzorców kontroli w ogóle; na przykład okienko, którego nie można przenosić, zmieniać rozmiaru ani zadokować, nie ma żadnych wzorców sterujących.
automatyzacja interfejsu użytkownika obsługuje kontrolki niestandardowe, które są identyfikowane przez Custom właściwość i mogą być opisane przez LocalizedControlTypeProperty właściwość .
W poniższej tabeli przedstawiono mapowanie aktywnych ról ułatwień dostępu do automatyzacja interfejsu użytkownika typów kontrolek.
Aktywna rola ułatwień dostępu | typ kontrolki automatyzacja interfejsu użytkownika |
---|---|
ROLE_SYSTEM_PUSHBUTTON | Przycisk |
ROLE_SYSTEM_CLIENT | Calendar |
ROLE_SYSTEM_CHECKBUTTON | Pole wyboru |
ROLE_SYSTEM_COMBOBOX | Pole kombi |
ROLE_SYSTEM_CLIENT | Niestandardowy |
ROLE_SYSTEM_LIST | Siatka danych |
ROLE_SYSTEM_LISTITEM | Element danych |
ROLE_SYSTEM_DOCUMENT | Dokument |
ROLE_SYSTEM_TEXT | Edytuj |
ROLE_SYSTEM_GROUPING | Grupuj |
ROLE_SYSTEM_LIST | Nagłówek |
ROLE_SYSTEM_COLUMNHEADER | Element nagłówka |
ROLE_SYSTEM_LINK | Hiperlink |
ROLE_SYSTEM_GRAPHIC | Obraz |
ROLE_SYSTEM_LIST | List |
ROLE_SYSTEM_LISTITEM | Element listy |
ROLE_SYSTEM_MENUPOPUP | Menu |
ROLE_SYSTEM_MENUBAR | Pasek menu |
ROLE_SYSTEM_MENUITEM | Element menu |
ROLE_SYSTEM_PANE | Pane |
ROLE_SYSTEM_PROGRESSBAR | Pasek postępu |
ROLE_SYSTEM_RADIOBUTTON | Radio button |
ROLE_SYSTEM_SCROLLBAR | Pasek przewijania |
ROLE_SYSTEM_SEPARATOR | Separator |
ROLE_SYSTEM_SLIDER | Suwak |
ROLE_SYSTEM_SPINBUTTON | Spinner |
ROLE_SYSTEM_SPLITBUTTON | Przycisk Podziel |
ROLE_SYSTEM_STATUSBAR | Pasek stanu |
ROLE_SYSTEM_PAGETABLIST | Tab |
ROLE_SYSTEM_PAGETAB | Element karty |
ROLE_SYSTEM_TABLE | Table |
ROLE_SYSTEM_STATICTEXT | Text |
ROLE_SYSTEM_INDICATOR | Thumb |
ROLE_SYSTEM_TITLEBAR | Pasek tytułu |
ROLE_SYSTEM_TOOLBAR | Pasek narzędzi |
ROLE_SYSTEM_TOOLTIP | ToolTip |
ROLE_SYSTEM_OUTLINE | Drzewa |
ROLE_SYSTEM_OUTLINEITEM | Element drzewa |
ROLE_SYSTEM_WINDOW | Window |
Aby uzyskać więcej informacji na temat różnych typów kontrolek, zobacz automatyzacja interfejsu użytkownika Typy kontrolek.
Stany i właściwości
W obszarze Aktywne ułatwienia dostępu elementy obsługują wspólny zestaw właściwości, a niektóre właściwości (takie jak accState
) muszą opisywać bardzo różne elementy, w zależności od roli elementu. Serwery muszą implementować wszystkie metody IAccessible
, które zwracają właściwość, nawet te, które nie są istotne dla elementu.
automatyzacja interfejsu użytkownika definiuje o wiele więcej właściwości, z których niektóre odpowiadają stanom w aktywnej dostępności. Niektóre są wspólne dla wszystkich elementów, ale inne są specyficzne dla typów kontrolek i wzorców kontrolek. Właściwości są rozróżniane przez unikatowe identyfikatory, a większość właściwości można pobrać przy użyciu jednej metody GetCurrentPropertyValue lub GetCachedPropertyValue. Wiele właściwości jest również łatwo pobieranych z Current metod dostępu właściwości i Cached .
Dostawca automatyzacja interfejsu użytkownika nie musi implementować nieistotnych właściwości, ale może po prostu zwrócić null
wartość dla żadnych właściwości, które nie obsługuje. Ponadto usługa podstawowa automatyzacja interfejsu użytkownika może uzyskać niektóre właściwości od domyślnego dostawcy okien i są one połączone z właściwościami jawnie zaimplementowanymi przez dostawcę.
Oprócz obsługi wielu innych właściwości, automatyzacja interfejsu użytkownika zapewnia lepszą wydajność, umożliwiając pobieranie wielu właściwości za pomocą jednego wywołania między procesami.
W poniższej tabeli przedstawiono korespondencję między właściwościami w dwóch modelach.
Dostęp do właściwości Aktywne ułatwienia dostępu | identyfikator właściwości automatyzacja interfejsu użytkownika | Uwagi |
---|---|---|
get_accKeyboardShortcut |
AccessKeyProperty lub AcceleratorKeyProperty | AccessKeyProperty ma pierwszeństwo, jeśli oba są obecne. |
get_accName |
NameProperty | |
get_accRole |
ControlTypeProperty | Zobacz poprzednią tabelę, aby uzyskać mapowanie ról na typy kontrolek. |
get_accValue |
ValuePattern.ValueProperty RangeValuePattern.ValueProperty |
Prawidłowe tylko dla typów kontrolek, które obsługują ValuePattern lub RangeValuePattern. Wartości RangeValue są znormalizowane do 0–100, aby były zgodne z zachowaniem usługi MSAA. Elementy wartości używają ciągu. |
get_accHelp |
HelpTextProperty | |
accLocation |
BoundingRectangleProperty | |
get_accDescription |
Nieobsługiwane w automatyzacja interfejsu użytkownika | accDescription nie ma wyraźnej specyfikacji w programie MSAA, co spowodowało, że dostawcy umieszczali różne informacje w tej właściwości. |
get_accHelpTopic |
Nieobsługiwane w automatyzacja interfejsu użytkownika |
W poniższej tabeli przedstawiono, które właściwości automatyzacja interfejsu użytkownika odpowiadają stałym stanom stanu aktywnej dostępności.
Stan aktywnej ułatwień dostępu | właściwość automatyzacja interfejsu użytkownika | Wyzwala zmiany stanu? |
---|---|---|
STATE_SYSTEM_CHECKED | Pole wyboru, ToggleStateProperty Dla przycisku radiowego, IsSelectedProperty |
Y |
STATE_SYSTEM_COLLAPSED | ExpandCollapseState = Collapsed | Y |
STATE_SYSTEM_EXPANDED | ExpandCollapseState = Expanded lub PartiallyExpanded | Y |
STATE_SYSTEM_FOCUSABLE | IsKeyboardFocusableProperty | N |
STATE_SYSTEM_FOCUSED | HasKeyboardFocusProperty | N |
STATE_SYSTEM_HASPOPUP | ExpandCollapsePattern dla elementów menu | N |
STATE_SYSTEM_INVISIBLE | IsOffscreenProperty = prawda i GetClickablePoint przyczyny NoClickablePointException | N |
STATE_SYSTEM_LINKED | ControlTypeProperty = Hyperlink |
N |
STATE_SYSTEM_MIXED | ToggleState = Indeterminate | N |
STATE_SYSTEM_MOVEABLE | CanMoveProperty | N |
STATE_SYSTEM_MUTLISELECTABLE | CanSelectMultipleProperty | N |
STATE_SYSTEM_OFFSCREEN | IsOffscreenProperty = True | N |
STATE_SYSTEM_PROTECTED | IsPasswordProperty | N |
STATE_SYSTEM_READONLY | RangeValuePattern.IsReadOnlyProperty i ValuePattern.IsReadOnlyProperty | N |
STATE_SYSTEM_SELECTABLE | SelectionItemPattern jest obsługiwana | N |
STATE_SYSTEM_SELECTED | IsSelectedProperty | N |
STATE_SYSTEM_SIZEABLE | CanResize | N |
STATE_SYSTEM_UNAVAILABLE | IsEnabledProperty | Y |
Następujące stany nie zostały zaimplementowane przez większość aktywnych serwerów kontroli ułatwień dostępu lub nie mają odpowiedników w automatyzacja interfejsu użytkownika.
Stan aktywnej ułatwień dostępu | Uwagi |
---|---|
STATE_SYSTEM_BUSY | Niedostępne w automatyzacja interfejsu użytkownika |
STATE_SYSTEM_DEFAULT | Niedostępne w automatyzacja interfejsu użytkownika |
STATE_SYSTEM_ANIMATED | Niedostępne w automatyzacja interfejsu użytkownika |
STATE_SYSTEM_EXTSELECTABLE | Nieuwzgodnianie zaimplementowane przez aktywne serwery ułatwień dostępu |
STATE_SYSTEM_MARQUEED | Nieuwzgodnianie zaimplementowane przez aktywne serwery ułatwień dostępu |
STATE_SYSTEM_SELFVOICING | Nieuwzgodnianie zaimplementowane przez aktywne serwery ułatwień dostępu |
STATE_SYSTEM_TRAVERSED | Niedostępne w automatyzacja interfejsu użytkownika |
STATE_SYSTEM_ALERT_HIGH | Nieuwzgodnianie zaimplementowane przez aktywne serwery ułatwień dostępu |
STATE_SYSTEM_ALERT_MEDIUM | Nieuwzgodnianie zaimplementowane przez aktywne serwery ułatwień dostępu |
STATE_SYSTEM_ALERT_LOW | Nieuwzgodnianie zaimplementowane przez aktywne serwery ułatwień dostępu |
STATE_SYSTEM_FLOATING | Nieuwzgodnianie zaimplementowane przez aktywne serwery ułatwień dostępu |
STATE_SYSTEM_HOTTRACKED | Niedostępne w automatyzacja interfejsu użytkownika |
STATE_SYSTEM_PRESSED | Niedostępne w automatyzacja interfejsu użytkownika |
Aby uzyskać pełną listę identyfikatorów właściwości automatyzacja interfejsu użytkownika, zobacz automatyzacja interfejsu użytkownika Properties Overview (Omówienie właściwości automatyzacja interfejsu użytkownika).
Zdarzenia
Mechanizm zdarzeń w automatyzacja interfejsu użytkownika, w przeciwieństwie do tego w aktywnej dostępności, nie polega na routingu zdarzeń systemu Windows (który jest ściśle powiązany z uchwytami okien) i nie wymaga, aby aplikacja kliencka skonfigurowała punkty zaczepienia. Subskrypcje zdarzeń można dostosować nie tylko do konkretnych zdarzeń, ale także do określonych części drzewa. Dostawcy mogą również dostroić ich zbieranie zdarzeń, śledząc, jakie zdarzenia są nasłuchiwane.
Klientom łatwiej jest również pobrać elementy, które zgłaszają zdarzenia, ponieważ są one przekazywane bezpośrednio do wywołania zwrotnego zdarzeń. Właściwości elementu są automatycznie pobierane wstępnie, jeśli żądanie pamięci podręcznej było aktywne, gdy klient subskrybował zdarzenie.
W poniższej tabeli przedstawiono korespondencję aktywnych zdarzeń WinEvents i automatyzacja interfejsu użytkownika ułatwień dostępu.
WinEvent | identyfikator zdarzenia automatyzacja interfejsu użytkownika |
---|---|
EVENT_OBJECT_ACCELERATORCHANGE | AcceleratorKeyProperty zmiana właściwości |
EVENT_OBJECT_CONTENTSCROLLED | VerticalScrollPercentProperty lub HorizontalScrollPercentProperty zmiana właściwości na skojarzonych paskach przewijania |
EVENT_OBJECT_CREATE | StructureChangedEvent |
EVENT_OBJECT_DEFACTIONCHANGE | Brak odpowiednika |
EVENT_OBJECT_DESCRIPTIONCHANGE | Nie ma dokładnego odpowiednika; być może HelpTextProperty lub LocalizedControlTypeProperty zmiana właściwości |
EVENT_OBJECT_DESTROY | StructureChangedEvent |
EVENT_OBJECT_FOCUS | AutomationFocusChangedEvent |
EVENT_OBJECT_HELPCHANGE | HelpTextProperty Zmienić |
EVENT_OBJECT_HIDE | StructureChangedEvent |
EVENT_OBJECT_LOCATIONCHANGE | BoundingRectangleProperty zmiana właściwości |
EVENT_OBJECT_NAMECHANGE | NameProperty zmiana właściwości |
EVENT_OBJECT_PARENTCHANGE | StructureChangedEvent |
EVENT_OBJECT_REORDER | Nie jest spójnie używany w aktywnych ułatwieniach dostępu. Nie zdefiniowano bezpośrednio odpowiedniego zdarzenia w automatyzacja interfejsu użytkownika. |
EVENT_OBJECT_SELECTION | ElementSelectedEvent |
EVENT_OBJECT_SELECTIONADD | ElementAddedToSelectionEvent |
EVENT_OBJECT_SELECTIONREMOVE | ElementRemovedFromSelectionEvent |
EVENT_OBJECT_SELECTIONWITHIN | Brak odpowiednika |
EVENT_OBJECT_SHOW | StructureChangedEvent |
EVENT_OBJECT_STATECHANGE | Różne zdarzenia zmienione właściwości |
EVENT_OBJECT_VALUECHANGE | RangeValuePattern.ValueProperty i ValuePattern.ValueProperty zmienione |
EVENT_SYSTEM_ALERT | Brak odpowiednika |
EVENT_SYSTEM_CAPTUREEND | Brak odpowiednika |
EVENT_SYSTEM_CAPTURESTART | Brak odpowiednika |
EVENT_SYSTEM_CONTEXTHELPEND | Brak odpowiednika |
EVENT_SYSTEM_CONTEXTHELPSTART | Brak odpowiednika |
EVENT_SYSTEM_DIALOGEND | WindowClosedEvent |
EVENT_SYSTEM_DIALOGSTART | WindowOpenedEvent |
EVENT_SYSTEM_DRAGDROPEND | Brak odpowiednika |
EVENT_SYSTEM_DRAGDROPSTART | Brak odpowiednika |
EVENT_SYSTEM_FOREGROUND | AutomationFocusChangedEvent |
EVENT_SYSTEM_MENUEND | MenuClosedEvent |
EVENT_SYSTEM_MENUPOPUPEND | MenuClosedEvent |
EVENT_SYSTEM_MENUPOPUPSTART | MenuOpenedEvent |
EVENT_SYSTEM_MENUSTART | MenuOpenedEvent |
EVENT_SYSTEM_MINIMIZEEND | WindowVisualStateProperty zmiana właściwości |
EVENT_SYSTEM_MINIMIZESTART | WindowVisualStateProperty zmiana właściwości |
EVENT_SYSTEM_MOVESIZEEND | BoundingRectangleProperty zmiana właściwości |
EVENT_SYSTEM_MOVESIZESTART | BoundingRectangleProperty zmiana właściwości |
EVENT_SYSTEM_SCROLLINGEND | VerticalScrollPercentProperty lub HorizontalScrollPercentProperty zmiana właściwości |
EVENT_SYSTEM_SCROLLINGSTART | VerticalScrollPercentProperty lub HorizontalScrollPercentProperty zmiana właściwości |
EVENT_SYSTEM_SOUND | Brak odpowiednika |
EVENT_SYSTEM_SWITCHEND | Brak odpowiednika, ale AutomationFocusChangedEvent zdarzenie sygnalizuje, że nowa aplikacja otrzymała fokus |
EVENT_SYSTEM_SWITCHSTART | Brak odpowiednika |
Brak odpowiednika | CurrentViewProperty zmiana właściwości |
Brak odpowiednika | HorizontallyScrollableProperty zmiana właściwości |
Brak odpowiednika | VerticallyScrollableProperty zmiana właściwości |
Brak odpowiednika | HorizontalScrollPercentProperty zmiana właściwości |
Brak odpowiednika | VerticalScrollPercentProperty zmiana właściwości |
Brak odpowiednika | HorizontalViewSizeProperty zmiana właściwości |
Brak odpowiednika | VerticalViewSizeProperty zmiana właściwości |
Brak odpowiednika | ToggleStateProperty zmiana właściwości |
Brak odpowiednika | WindowVisualStateProperty zmiana właściwości |
Brak odpowiednika | AsyncContentLoadedEvent Zdarzenie |
Brak odpowiednika | ToolTipOpenedEvent |
Zabezpieczenia
Niektóre IAccessible
scenariusze dostosowywania wymagają zawijania bazy IAccessible
i wywoływania do niej. Ma to wpływ na bezpieczeństwo, ponieważ częściowo zaufany składnik nie powinien być pośrednikiem w ścieżce kodu.
Model automatyzacja interfejsu użytkownika eliminuje potrzebę wywołania przez dostawców do innego kodu dostawcy. Podstawowa usługa automatyzacja interfejsu użytkownika wykonuje wszystkie niezbędne agregacje.