共用方式為


輔助功能概觀

本文概述 Windows 應用程式輔助功能案例的相關概念和技術。

輔助功能與您的應用程式

有許多可能的殘疾或障礙,包括行動性、視覺、色彩感知、聽力、語音、認知和識字的限制。 不過,您可以遵循此處提供的指導方針來解決大部分的需求。 這表示提供:

  • 支援鍵盤互動和螢幕助讀程式。
  • 支援使用者自定義,例如字型、縮放設定(放大)、色彩和高對比度設定。
  • UI 部分的替代方案或補充元素。

XAML 控件提供內建的鍵盤支援和協助技術支援,例如螢幕閱讀器,利用已經支援 UWP 應用程式、HTML 和其他用戶介面技術的可及性框架。 此內建支援使您只需調整少數屬性即可輕鬆自定義基本層級的輔助功能。 如果您要建立自己的自定義 XAML 元件和控件,您可以透過使用 自動化對等的概念,為這些控件新增相似的支援。

此外,數據系結、樣式和範本功能可讓您輕鬆地實作動態變更的支援,以顯示替代UI的設定和文字。

UI 自動化

輔助功能支援主要來自Microsoft使用者介面自動化架構的整合式支援。 該支援是透過基礎類別和控制項類型的類別實作中的內建行為,以及 UI 自動化提供者 API 的介面式表示來提供。 每個控件類別都會使用自動化對等和自動化模式的UI自動化概念,將控件的角色和內容回報給UI自動化用戶端。 應用程式會由UI自動化視為最上層視窗,而透過UI自動化架構,該應用程式視窗內的所有輔助功能相關內容都可供使用者介面自動化用戶端使用。 如需UI自動化的詳細資訊,請參閱 UI自動化概觀

輔助技術

許多使用者的無障礙需求是透過使用者安裝的輔助技術產品,或由操作系統提供的工具和設定來滿足的。 這包括螢幕助讀程式、螢幕放大和高對比度設定等功能。

輔助技術產品包括各種不同的軟體和硬體。 這些產品會透過標準鍵盤介面和輔助功能架構,向螢幕助讀程式和其他輔助技術報告 UI 內容和結構的相關信息。 輔助技術產品的範例包括:

  • 螢幕小鍵盤,可讓使用者使用指標代替鍵盤輸入文字。
  • 語音辨識軟體,可以將口語轉換成鍵入的文字。
  • 螢幕助讀程式,可將文字轉換成口語或其他形式,例如盲文。
  • 朗讀程式螢幕助讀程式,這是 Windows 的一部分。 朗讀程式具有觸控模式,可藉由處理觸控手勢來執行螢幕閱讀工作,適用於沒有可用的鍵盤時。
  • 調整其顯示或區域的程式或設定,例如高對比度主題、顯示器的每英吋點數(dpi) 設定,或放大鏡工具。

具有良好鍵盤和螢幕助讀程式支援的應用程式,通常適用於各種輔助技術產品。 在許多情況下,UWP 應用程式可搭配這些產品使用,而不需要額外修改資訊或結構。 不過,您可能想要修改某些設定,以獲得最佳的輔助功能體驗,或實作其他支援。

您可以使用一些選項來測試基本無障礙場景,這些選項列在 無障礙功能測試中。

螢幕閱讀器支援和基本無障礙資訊

螢幕助讀程式透過其他形式,例如口語或盲文輸出,為應用程式中的文字提供存取方式。 螢幕助讀程式的實際行為取決於軟體,以及用戶的設定。

例如,某些螢幕助讀程式會在用戶啟動時讀取整個應用程式 UI,或切換至正在檢視的應用程式,這可讓使用者在嘗試流覽之前接收所有可用的資訊內容。 某些螢幕助讀程式也會在索引標籤導覽期間收到焦點時,讀取與個別控件相關聯的文字。 這可讓使用者在應用程式輸入控件之間巡覽時,自行設定方向。 朗讀程式是螢幕助讀程式範例,可根據用戶選擇提供這兩種行為。

螢幕助讀程式或任何其他輔助技術需要的最重要資訊,可協助使用者瞭解或瀏覽應用程式,是應用程式元素部分的 無障礙名稱。 在許多情況下,控件或專案已經有一個可存取的名稱,該名稱是從您提供的其他屬性值計算而來。 最常見的情況是,您可以在支援並顯示內部文字的元素上使用已經計算的名稱。 對於其他元素,您有時需要考慮其他提供無障礙名稱的方法,並遵循元素結構的最佳實踐。 有時候,您需要提供明確做為應用程式輔助功能無障礙名稱的名稱。 如需這些計算值在常見 UI 元素中應用的數目列表,以及有關一般可存取名稱的更多資訊,請參閱 基本輔助功能資訊

還有其他數個可用的自動化屬性(包括下一節所述的鍵盤屬性)。 不過,並非所有螢幕助讀程式都支援所有自動化屬性。 一般而言,您應該設定所有適當的自動化屬性和測試,為螢幕助讀程式提供最廣泛的支援。

鍵盤支援

若要提供良好的鍵盤支援,您必須確保應用程式的每個部分都可以與鍵盤搭配使用。 如果您的應用程式主要使用標準控制項,且未使用任何自定義控制項,那麼您已完成大部分的工作。 基本 XAML 控制項模型提供內建的鍵盤支援,包括索引標籤覽、文字輸入,以及控制項特定的支援。 作為配置容器的元素(例如面板)會使用版面配置順序來建立預設標籤順序。 該順序通常是用於使用者介面的易於存取呈現的正確標籤順序。 如果您使用 ListBoxGridView 控件來顯示資料,它們會提供內建箭頭鍵流覽。 或者,如果您使用 按鈕 控件,它已經處理空白鍵或 Enter 鍵來啟用按鈕。

如需有關鍵盤支援的所有層面的詳細資訊,包括標籤順序和按鍵驅動啟用或導航,請參閱 鍵盤輔助功能

媒體和字幕

您通常會透過 MediaElement 物件來顯示影音媒體。 您可以使用 MediaElement API 來控制媒體播放。 為了方便存取,請提供控件,讓用戶視需要播放、暫停和停止媒體。 有時候,媒體會包含適用於輔助功能的其他元件,例如字幕或包含敘述描述的替代音訊曲目。

無障礙文字

文字的三個主要方面與無障礙相關:

  • 工具必須判斷文字是要讀取為標籤順序遍歷的一部分,還是僅作為整體文件表示的一部分。 您可以選擇適當的元素來顯示文字,或調整這些文字元素的屬性,以協助控制此判斷。 每個文字元素都有特定用途,且該用途通常具有對應的UI自動化角色。 使用錯誤的元素會導致將錯誤的角色回報給UI自動化,並為輔助技術使用者建立令人困惑的體驗。
  • 許多使用者都有視覺限制,使得他們很難閱讀文字,除非它與背景有足夠的對比。 對於沒有視覺限制的應用程式設計師來說,這種影響對使用者而言並不直觀。 例如,對於色盲使用者,設計中的色彩選擇不佳可能會防止某些使用者讀取文字。 原本針對 Web 內容提出的輔助功能建議會定義對比標準,以避免在應用程式中發生這些問題。 如需詳細資訊,請參閱 無障礙文字需求
  • 許多使用者很難閱讀太小的文字。 您可以一開始就使應用程式介面中的文字具有相當大的字體,以防止此問題。 不過,對於顯示大量文字或與其他視覺元素交錯的文字的應用程式來說,這很困難。 在這種情況下,請確定應用程式會正確地與能調整顯示比例的系統功能互動,讓應用程式中的任何文字隨之調整。 (部分使用者會更改 dpi 值作為輔助功能選項。此選項可從 [輕鬆存取]中的「將畫面上的項目放大」,這將重新導向到 控制台,針對 [外觀和個人化][顯示]的介面。)

支援高對比度主題

UI 控制項使用定義在主題 XAML 資源字典中的視覺表示法。 當系統設定為高對比度時,會特別使用一或多個這些主題。 當使用者切換至高對比度時,透過動態查閱資源字典的適當主題,您的所有UI控制程式也會使用適當的高對比度主題。 只要指定明確的樣式或使用另一種樣式技術來防止高對比度主題載入和覆寫您的樣式變更,即可確定您尚未停用主題。 如需詳細資訊,請參閱 高對比度主題

替代UI的設計

當您設計應用程式時,請考慮其如何供行動能力有限、視覺和聽覺的人員使用。 由於輔助技術產品廣泛使用標準 UI,因此即使您沒有對輔助功能進行其他調整,提供良好的鍵盤和螢幕助讀程式支援也特別重要。

在許多情況下,您可以使用多種方法來擴大受眾群體,傳達重要資訊。 例如,您可以使用圖示和色彩資訊來醒目提示資訊,以協助色盲使用者,而且您可以顯示視覺警示以及音效,以協助聾人或聽力困難的使用者。

如有必要,您可以提供可存取的替代使用者介面元素,以完全移除不必要元素和動畫,並提供其他簡化來簡化用戶體驗。 下列程式代碼範例示範如何根據使用者設定,顯示一個 UserControl 實例來取代另一個實例。

XAML

<StackPanel x:Name="LayoutRoot" Background="White">

  <CheckBox x:Name="ShowAccessibleUICheckBox" Click="ShowAccessibleUICheckBox_Click">
    Show Accessible UI
  </CheckBox>

  <UserControl x:Name="ContentBlock">
    <local:ContentPage/>
  </UserControl>

</StackPanel>

Visual Basic

Private Sub ShowAccessibleUICheckBox_Click(ByVal sender As Object,
    ByVal e As RoutedEventArgs)

    If (ShowAccessibleUICheckBox.IsChecked.Value) Then
        ContentBlock.Content = New AccessibleContentPage()
    Else
        ContentBlock.Content = New ContentPage()
    End If
End Sub

C#

private void ShowAccessibleUICheckBox_Click(object sender, RoutedEventArgs e)
{
    if ((sender as CheckBox).IsChecked.Value)
    {
        ContentBlock.Content = new AccessibleContentPage();
    }
    else
    {
        ContentBlock.Content = new ContentPage();
    }
}

驗證和發佈

如需輔助功能宣告和發佈應用程式的詳細資訊,請參閱 Store中的輔助功能

備註

將應用程式宣告為可存取性,僅與 Microsoft 市集相關。

自定義控件中的輔助技術支援

當您建立自訂控制項時,建議您也實現或延伸一個或多個 AutomationPeer 子類別,以提供無障礙支援。 只要您使用與基本控制類別相同的對等類別,衍生類別的自動化支援在基本層面上就足夠了,在某些情況下也會如此。 不過,您應該測試這一點,並且仍建議實作對等體作為最佳做法,以便對等體能夠正確報告新控制項類別的名稱。 實作自定義的自動化夥伴涉及一些步驟。 如需詳細資訊,請參閱 自訂自動化合作對象

支援 XAML/Microsoft DirectX Interop 之應用程式中的輔助技術支援

Microsoft 在 XAML UI 中托管的 DirectX 內容(使用 SwapChainPanelSurfaceImageSource)預設無法存取。 XAML SwapChainPanel DirectX Interop 範例 示範如何為裝載的 DirectX 內容建立 UI 自動化對等。 這項技術可讓裝載的內容可透過UI自動化存取。

範例

小提示

開啟 WinUI 3 Gallery 應用程式,並查看下列無障礙功能原則的運作方式:

WinUI 3 Gallery 應用程式包含大部分 WinUI 3 控制項、特性和功能的互動式範例。 從 Microsoft Store 取得應用程式,或在 GitHub 上取得原始程式碼