共用方式為


圓角半徑

WinUI 2.2 版開始,許多控件的預設樣式已更新為使用圓角。 這些新樣式旨在喚起溫暖和信任,並讓使用者更容易以視覺方式處理UI。

以下是兩個 Button 控件,第一個沒有圓角,第二個使用圓角樣式。

有圓角和沒有圓角的按鈕

WinUI 提供 WinUI 和平臺控制件的更新樣式。 如需如何自定義圓角的詳細資訊,請參閱 自定義選項

這很重要

某些控件可在平臺 (Windows.UI.Xaml.Controls) 和 WinUI 中取得 (Microsoft.UI.Xaml.Controls):例如 TreeViewColorPicker。 當您在應用程式中使用 WinUI 時,應該使用控件的 WinUI 版本。 使用 WinUI 時,平台版本可能會不一致地套用圓角設計。

重要 APIControl.CornerRadius 屬性

默認控件設計

控件中有三個區域使用圓角樣式:矩形元素、彈出視窗元素和橫條元素。

矩形 UI 元素的角落

  • 這些UI元素包含基本控件,例如用戶隨時在螢幕上看到的按鈕。
  • 我們用於這些UI元素的預設半徑值為 4px

圓角按鈕被突出顯示

控制

  • 自動建議框
  • 按鈕
    • ContentDialog 按鈕
  • 日曆日期選擇器
  • CheckBox
    • TreeView、GridView 和 ListView 多重選取複選框
  • 色彩選擇器
  • 命令列
  • ComboBox
  • 日期選取器
  • 下拉按鈕
  • 膨脹器
  • FlipView (翻轉視圖)
  • GridView 和 ListView
    • AutoSuggestBox、ComboBox、DatePicker、MenuBar、NavigationView、TimePicker、TreeView 清單
  • 資訊列
  • 筆跡控件
  • 媒體播放
  • MenuBar
  • 數字輸入框
  • 密碼欄
  • RichEditBox (富編輯框)
  • 分離按鈕
  • 文字框
  • TimePicker (時間選取器)
  • 切換按鈕
  • 切換分離按鈕

飛出視窗和重疊 UI 元素的角落

  • 這些可以是暫時性的 UI 元素,會暫時出現在畫面上,例如 MenuFlyout,或覆蓋其他 UI 的元素,例如 TabView 標籤。
  • 我們用於這些UI元素的預設半徑值為 8px

飛出視窗範例

控制

  • CommandBarFlyout 命令欄
  • 內容對話框 (ContentDialog)
  • 彈出選單
  • 選單彈出식
  • TabView 分頁
  • 教學提示
  • 工具提示(由於尺寸小而使用 4px 半徑)
  • 飛出視窗部分 (開啟時)
    • 自動建議框
    • 日曆日期選擇器
    • ComboBox
    • 日期選取器
    • 下拉按鈕
    • 筆跡控件
    • MenuBar
    • 數字輸入框
    • 分離按鈕
    • TimePicker (時間選取器)
    • 切換分離按鈕

條形圖元素

  • 這些UI元素的形狀類似橫條或線條;例如,ProgressBar。
  • 我們在這裡使用的預設半徑值為 4px

進度列範例

控制

  • NavigationView 選取指標
  • 進度條 (ProgressBar)
  • 捲軸
  • 滑塊
    • ColorPicker 色彩滑桿
    • MediaTransportControls 搜尋列滑桿

自訂選項

我們提供的預設角落圓角值並非固定不變,有幾種方法可以讓您輕鬆調整角落的圓角程度。 這可以透過兩個全域資源來完成,或透過 控件上的 CornerRadius 屬性直接完成,視您想要的自定義粒度層級而定。

不應四捨五入的情況

在某些情況下,控件的角落不應該是圓角,並且我們預設不會將這些角落做成圓角。

  • 當容器內有多個 UI 元素彼此接觸時,例如 SplitButton 的兩個部分。 當他們接觸時,不應有空隙。

分割按鈕

  • 當飛出式 UI 元件連接到觸發飛出視窗的 UI 一側時。

自動推薦下拉選單的截圖,其中某些角落不是圓角。

頁面或整個應用程式的圓角半徑變更

有 2 個應用程式資源可控制所有控制元件的邊角半徑:

  • ControlCornerRadius - 預設值為 4px。
  • OverlayCornerRadius - 預設值為 8px。

如果您在任一範圍中覆寫這些資源的值,則會相應地影響該範圍內的所有控件。

這表示如果您想要變更可套用圓角之所有控件的圓角,您可以在應用層級使用如下的新 CornerRadius 值來定義這兩個資源:

<Application
    xmlns=”http://schemas.microsoft.com/winfx/2006/xamlpresentation”
    xmlns:x=”http://schemas.micosoft.com/winfx/2006/xaml”
    xmlns:control=”using:Microsoft.UI.Xaml.Controls”>
    <Application.Resources>
      <controls:XamlControlsResources>
        <controls:XamlControlsResources.MergedDictionaries>
          <ResourceDictionary>
            <CornerRadius x:Key="OverlayCornerRadius">0</CornerRadius>
            <CornerRadius x:Key="ControlCornerRadius">0</CornerRadius>
          </ResourceDictionary>
        </controls:XamlControlsResources.MergedDictionaries>
      </controls:XamlControlsResources>
    </Application.Resources>
</Application>


或者,如果您想要變更特定範圍中的所有控件圓度,例如在頁面或容器層級,您可以遵循類似的模式:

<Grid>
    <Grid.Resources>
        <CornerRadius x:Key="ControlCornerRadius">8</CornerRadius>
    </Grid.Resources>
    <Button Content="Button"/>
</Grid>

備註

資源 OverlayCornerRadius 必須在應用程式層級定義,才能生效。

這是因為快顯和飛出視窗不在頁面的可視化樹狀結構中,它們會新增至快顯根目錄。 資源解析系統未能正確遍歷 Popup Root 可視化樹狀結構,展開至頁面的可視化樹狀結構。

每個控制項的圓角變更

如果您只想改變部分控件的圓角度,可以直接修改控件上的 CornerRadius 屬性。

預設 屬性已修改
默認複選框 自訂複選框
<CheckBox Content="Checkbox"/> <CheckBox Content="Checkbox" CornerRadius="5"/>

並非所有控件的角落都會回應控件的 CornerRadius 屬性被修改。 若要確保您想要圓角的控件能按照預期回應其 CornerRadius 屬性,請先檢查 ControlCornerRadiusOverlayCornerRadius 全域資源是否會影響該控件。 如果沒有,請檢查您想要圓角的控件是否完全有角落。 我們的許多控制件不會轉譯實際邊緣,因此無法正確使用 CornerRadius 屬性。

以 WinUI 為基礎建立自訂樣式

您可以藉由在樣式中指定正確的 BasedOn 屬性,以 WinUI 圓角樣式為基礎自定義樣式。 例如,若要根據 WinUI 按鈕樣式建立自訂按鈕樣式,請執行下列動作:

<Style x:Key="MyCustomButtonStyle" BasedOn="{StaticResource DefaultButtonStyle}">
   ...
</Style>

一般而言,WinUI 控件樣式會遵循一致的命名慣例:“DefaultXYZStyle”,其中 “XYZ” 是控件的名稱。 如需完整參考,您可以瀏覽 WinUI 存放庫中的 XAML 檔案。