Progettare proprietà, eventi e pattern di controllo personalizzati

La progettazione di una proprietà personalizzata, un evento o un pattern di controllo deve essere utile in un'ampia gamma di implementazioni di controlli. È consigliabile evitare progettazioni specifiche del controllo o dell'applicazione utili solo in scenari limitati. La progettazione deve seguire l'esempio delle proprietà, degli eventi e dei pattern di controllo Automazione interfaccia utente microsoft esistenti, che sono stati accuratamente specificati per soddisfare le esigenze di un'ampia gamma di applicazioni di test automatizzate e accessibilità.

L'implementazione della specifica per una proprietà personalizzata, un evento o un modello di controllo implica la cooperazione e l'accordo delle parti sia sul lato client che sul lato provider e richiede che entrambe le parti implementino in modo coerente la specifica. Le aziende sono incoraggiate a collaborare con organizzazioni del settore, ad esempio Accessibility Interoperability Alliance (AIA) per progettare e pubblicare la specifica per la proprietà personalizzata, l'evento o il modello di controllo. In questo modo, è possibile raggiungere il consenso e garantire l'interoperabilità con la più ampia varietà di applicazioni.

In questo argomento sono incluse le sezioni seguenti:

Quando usare proprietà ed eventi personalizzati

Prima di creare una proprietà personalizzata, un evento o un pattern di controllo, assicurarsi che Automazione interfaccia utente non fornisca una soluzione esistente. Ad esempio, la creazione di un pattern di controllo personalizzato "Click" non è necessaria perché il pattern di controllo Invoke descrive già tale funzionalità.

Se si decide che è necessaria una proprietà personalizzata, un evento o un pattern di controllo, assicurarsi che non sia troppo vaga o generica. Ad esempio, un pattern di controllo denominato "Show" non è utile perché la visibilità di un controllo può essere indicata da una proprietà di disponibilità sull'elemento, ad esempio UIA_IsExpandCollapsePatternAvailablePropertyId o UIA_IsScrollItemPatternAvailablePropertyId.

Prima di implementare una soluzione personalizzata, verificare attentamente che sia necessaria e quindi progettare completamente la funzionalità.

Progettazione di proprietà personalizzate

Automazione interfaccia utente include due tipi di proprietà di base: proprietà degli elementi di automazione e proprietà del pattern di controllo. Le proprietà degli elementi di automazione sono costituite da un set comune di proprietà, ad esempio Name, AcceleratorKey e ClassName, esposte da tutti gli elementi Automazione interfaccia utente, indipendentemente dal tipo di controllo. Le proprietà del pattern di controllo vengono esposte da un controllo tramite un particolare pattern di controllo. Ogni pattern di controllo ha un set corrispondente di proprietà del pattern di controllo che il controllo deve esporre. Ad esempio, un controllo che supporta il pattern di controllo Grid espone le proprietà ColumnCount e RowCount.

Una proprietà personalizzata dell'elemento di automazione o del pattern di controllo deve rispettare le linee guida di progettazione seguenti:

  • Una proprietà personalizzata deve avere uno dei tipi di dati seguenti specificati dall'enumerazione UIAutomationType . Nessun altro tipo di dati è supportato per le proprietà personalizzate.
    • UIAutomationType_Bool
    • UIAutomationType_Double
    • UIAutomationType_Element
    • UIAutomationType_Int
    • UIAutomationType_Point
    • UIAutomationType_String
  • Se la proprietà personalizzata contiene dati stringa (BSTR), la specifica deve indicare se la proprietà è localizzabile, ovvero se la stringa può essere convertita in lingue dell'interfaccia utente diverse.
  • La proprietà personalizzata non deve sovrapporsi alle funzionalità o alle funzionalità delle proprietà esistenti.

Progettazione di eventi personalizzati

Le applicazioni usano Automazione interfaccia utente notifiche degli eventi per rispondere alle modifiche e alle azioni che coinvolgono elementi dell'interfaccia utente. La maggior parte delle proprietà ha associato eventi di modifica delle proprietà che Automazione interfaccia utente genera quando il valore della proprietà viene modificato. Se si introduce una proprietà personalizzata, è consigliabile introdurre eventuali eventi personalizzati corrispondenti che potrebbero essere necessari.

Un evento personalizzato deve rispettare le linee guida di progettazione seguenti:

  • L'evento personalizzato deve essere "senza stato". Non può essere associato a una proprietà o a un valore specifico.
  • L'evento personalizzato non deve sovrapporsi alla definizione o al ruolo di un evento esistente.

Eventi Automazione interfaccia utente personalizzati e WinEvent

WinEvents è un meccanismo utile di comunicazione e eventi interprocesso nella piattaforma Microsoft Windows. Tuttavia, l'introduzione di un nuovo ID WinEvent è rischiosa perché può causare conflitti con altre applicazioni o il sistema operativo, causando un'instabilità del sistema. Per evitare conflitti, Microsoft ha definito diverse categorie di WinEvent e, per ogni categoria, ha definito uno o più intervalli di valori da usare come ID WinEvent. Per altre informazioni, vedere Allocazione di ID WinEvent.

Gli eventi di Automazione interfaccia utente personalizzati evitano conflitti allocando internamente l'ID evento nel framework di Automazione interfaccia utente.

Progettazione di modelli di controllo personalizzati

Un pattern di controllo è un'interfaccia con proprietà, metodi ed eventi che definiscono una parte discreta di funzionalità disponibile da un elemento di automazione. I metodi del pattern di controllo consentono Automazione interfaccia utente client di modificare un particolare aspetto del controllo. Le proprietà e gli eventi del pattern di controllo forniscono informazioni su alcuni aspetti del controllo e forniscono informazioni sullo stato dell'elemento di automazione che implementa il pattern di controllo.

Un pattern di controllo personalizzato deve rispettare le linee guida di progettazione seguenti:

  • Un pattern di controllo personalizzato deve coprire uno scenario specifico. Ad esempio, il pattern di controllo ItemContainer è destinato a eseguire query su un oggetto indipendentemente dallo stato di virtualizzazione, ma non enumera o conta gli oggetti contenuti.
  • Un pattern di controllo personalizzato non deve sovrapporsi alle funzionalità dei pattern di controllo esistenti. Ad esempio, i pattern di controllo Invoke ed ExpandCollapse non devono essere combinati e presentati come nuovo pattern di controllo. Riutilizzare i pattern di controllo esistenti o definire scenari univoci con nuovi pattern di controllo.
  • È possibile progettare più modelli di controllo personalizzati per supportare scenari complessi. Ad esempio, i pattern di controllo Selection e SelectionItem interagiscono per supportare scenari generali di selezione degli oggetti.

Tipi di controllo personalizzati

Anche se questo argomento è incentrato su come registrare proprietà, eventi e pattern di controllo Automazione interfaccia utente personalizzati, è anche possibile introdurre nuovi tipi di controllo. A differenza delle proprietà personalizzate, degli eventi e dei pattern di controllo, non è possibile registrare un tipo di controllo personalizzato a livello di codice in fase di esecuzione perché è in realtà solo un valore potenziale della proprietà ControlType Automazione interfaccia utente. Tuttavia, un ID del tipo di controllo personalizzato può essere definito, pubblicato e reso disponibile per altri client e provider da usare. Per altre informazioni sui tipi di controllo, vedere panoramica dei tipi di controllo Automazione interfaccia utente.

Informazioni concettuali

Registrazione di proprietà, eventi e pattern di controllo personalizzati

Cenni preliminari sulle proprietà di automazione interfaccia utente

Cenni preliminari sugli eventi di automazione interfaccia utente

Cenni preliminari sui pattern di controllo per l'automazione interfaccia utente