Skip to content

Commit 8acb9f6

Browse files
Merge pull request #6638 from MicrosoftDocs/main
Auto Publish – main to live - 2026-04-15 05:00 UTC
2 parents bcf1e19 + 5bcd156 commit 8acb9f6

24 files changed

Lines changed: 409 additions & 574 deletions

.openpublishing.redirection.json

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,20 @@
11
{
22
"redirections": [
3+
{
4+
"source_path": "hub/apps/design/widgets/widgets-create-a-template.md",
5+
"redirect_url": "/windows/apps/develop/widgets/widgets-create-a-template",
6+
"redirect_document_id": true
7+
},
8+
{
9+
"source_path": "hub/apps/design/style/sound.md",
10+
"redirect_url": "/windows/apps/develop/ui/sound",
11+
"redirect_document_id": false
12+
},
13+
{
14+
"source_path": "hub/apps/design/app-settings/store-and-retrieve-app-data.md",
15+
"redirect_url": "/windows/apps/develop/data/store-and-retrieve-app-data",
16+
"redirect_document_id": true
17+
},
318
{
419
"source_path": "uwp/audio-video-camera/camera-ui-features-for-mobile-devices.md",
520
"redirect_url": "/previous-versions/windows/uwp/audio-video-camera/camera-ui-features-for-mobile-devices",
6.68 KB
Loading
Lines changed: 39 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,17 @@
11
---
2-
description: This article describes best practices for creating and displaying app settings.
2+
description: This article describes best practices for creating and displaying app settings in WinUI apps.
33
title: Guidelines for app settings
4-
ms.assetid: 2D765E90-3FA0-42F5-A5CB-BEDC14C3F60A
54
label: Guidelines
65
template: detail.hbs
7-
ms.date: 09/24/2020
6+
ms.date: 04/08/2026
87
ms.topic: article
9-
keywords: windows 10, uwp
8+
keywords: windows 11, winui
109
ms.localizationpriority: medium
1110
---
1211

1312
# Guidelines for app settings
1413

15-
App settings are the user-customizable portions of your Windows app accessed through an app settings page. For example, a news reader app might let the user specify which news sources to display or how many columns to display on the screen, while a weather app could let the user choose between Celsius and Fahrenheit. This article provides recommendations and best practices for creating and displaying app settings.
14+
App settings are the user-customizable portions of your Windows app, accessed through a dedicated settings page. For example, a news reader app might let the user specify which news sources to display or how many columns to display on the screen, while a weather app could let the user choose between Celsius and Fahrenheit. This article provides recommendations and best practices for creating and displaying app settings in WinUI apps.
1615

1716
## When to provide a settings page
1817

@@ -28,7 +27,7 @@ Commands that are part of the typical app workflow (for example, changing the br
2827

2928
- Keep settings pages simple and make use of binary (on/off) controls. A [toggle switch](../controls/toggles.md) is usually the best control for a binary setting.
3029
- For settings that let users choose one item from a set of up to 5 mutually exclusive, related options, use [radio buttons](../controls/radio-button.md).
31-
- Create an entry point for all app settings in your app setting's page.
30+
- Create an entry point for all app settings in your app's settings page.
3231
- Keep your settings simple. Define smart defaults and keep the number of settings to a minimum.
3332
- When a user changes a setting, the app should immediately reflect the change.
3433
- Don't include commands that are part of the common app workflow.
@@ -39,7 +38,7 @@ The way that users get to your app settings page should be based on your app's l
3938

4039
**Navigation pane**
4140

42-
For a nav pane layout, app settings should be the last item in the list of navigational choices and be pinned to the bottom:
41+
For a [NavigationView](../controls/navigationview.md) layout, app settings should be the last item in the list of navigational choices and be pinned to the bottom. `NavigationView` provides a built-in settings item for this purpose — set the [IsSettingsVisible](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.navigationview.issettingsvisible) property to `true` to display a **Settings** entry at the bottom of the navigation pane automatically.
4342

4443
![app settings entry point for nav pane](images/appsettings-nav-settings.png)
4544

@@ -49,88 +48,72 @@ If you're using a [command bar](../controls/command-bar.md) or tool bar, place t
4948

5049
![app settings entry point for command bar](images/appbar-overflow-icons.png)
5150

52-
**Hub**
53-
54-
If you're using a hub layout, the entry point for app settings should be placed inside the "More" overflow menu of a command bar.
55-
56-
**Tabs/pivots**
51+
## Layout
5752

58-
For a tabs or pivots layout, we don't recommend placing the app settings entry point as one of the top items within the navigation. Instead, the entry point for app settings should be placed inside the "More" overflow menu of a command bar.
53+
The app settings page should open full-screen and fill the whole window. Use a scrollable layout with a constrained max width (around 1000–1100 px) so content remains readable on wide displays. Group related settings under section headers using the **BodyStrong** text style.
5954

60-
**List-details**
55+
Use the [SettingsCard and SettingsExpander](/dotnet/communitytoolkit/windows/settingscontrols/settingscard) controls from the [Windows Community Toolkit](https://aka.ms/toolkit/windows) to build your settings page. These controls provide a consistent, accessible layout with a header, description, icon, and an action control aligned to the right side of the card.
6156

62-
Instead of burying the app settings entry point deeply within a list-details pane, make it the last pinned item on the top level of the list pane.
57+
For complete implementation examples, see the [WinUI Gallery settings page](https://github.com/microsoft/WinUI-Gallery/blob/main/WinUIGallery/Pages/SettingsPage.xaml) and the [Windows Community Toolkit SettingsControls sample](https://github.com/CommunityToolkit/Windows/blob/main/components/SettingsControls/samples/SettingsPageExample.xaml).
6358

64-
## Layout
59+
![layout for app settings page on desktop](images/appsettings-layout-navpane-desktop.png)
6560

61+
### SettingsCard
6662

67-
The app settings window should open full-screen and fill the whole window. If your app settings menu has up to four top-level groups, those groups should cascade down one column.
63+
Use a [SettingsCard](/dotnet/communitytoolkit/windows/settingscontrols/settingscard) for individual settings. Each card has a **Header**, an optional **Description**, an optional **HeaderIcon**, and an action control (such as a `ToggleSwitch`, `ComboBox`, or `Button`) placed as the card's content. Setting the `IsClickEnabled` property to `true` makes the entire card clickable, which is useful for navigation-style entries.
6864

69-
![layout for app settings page on desktop](images/appsettings-layout-navpane-desktop.png)
65+
### SettingsExpander
7066

67+
Use a [SettingsExpander](/dotnet/communitytoolkit/windows/settingscontrols/settingsexpander) when a setting has sub-options that should be revealed on demand. The expander shows a primary action control on the header row and additional `SettingsCard` items inside the `Items` collection. This keeps the page compact while still surfacing advanced options. Avoid nesting expanders deeper than one level.
7168

72-
## "Color mode" settings
69+
## App theme settings
7370

71+
If your app allows users to choose the app's color mode, present these options using a [combo box](../controls/combo-box.md) inside a `SettingsCard`. The options should read:
7472

75-
If your app allows users to choose the app's color mode, present these options using [radio buttons](../controls/radio-button.md) or a [combo box](../controls/combo-box.md) with the header "Choose an app mode". The options should read
7673
- Light
7774
- Dark
78-
- Windows default
75+
- Use system setting
7976

80-
We also recommend adding a hyperlink to the Colors page of Windows Settings where users can access and modify the current default app mode. Use the string "Windows color settings" for the hyperlink text and `ms-settings:colors` for the URI.
77+
You may also want to add a hyperlink to the Colors page of Windows Settings where users can access and modify the current default app mode. Use the string "Windows color settings" for the hyperlink text and `ms-settings:colors` for the URI.
8178

8279
!["Choose a mode" section](images/appsettings_mode.png)
8380

84-
<!--
85-
<div class="microsoft-internal-note">
86-
Detailed redlines showing preferred text strings for the "Choose a mode" section are available on [UNI](https://uni/DesignDepot.FrontEnd/#/ProductNav/2543/0/dv/?t=Windows%7CControls%7CColorMode&f=RS2).
87-
</div>
88-
-->
81+
## About section
8982

90-
## About section and Feedback button
83+
We recommend placing an **About** section at the bottom of your settings page using a `SettingsExpander`. The collapsed header row should show your app name, icon, and version number. The expanded area can include:
9184

92-
93-
We recommend placing "About this App" section in your app either as a dedicated page or in its own section. If you want a "Send Feedback" button, place that toward the bottom of the "About this App" page.
94-
95-
Under a "Legal" subheader, place any "Terms of Use" and "Privacy Statement" (should be [hyperlink buttons](../controls/hyperlinks.md) with wrapping text) as well as additional legal information, such as copyright.
85+
- A link to your app's repository or website.
86+
- A link to file bugs or request features.
87+
- A list of dependencies and references as [HyperlinkButton](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.hyperlinkbutton) controls.
88+
- Legal information such as a copyright notice, Terms of Use, and Privacy Statement links.
9689

9790
!["about this app" section with "give feedback" button](images/appsettings-about.png)
9891

99-
10092
## Recommended page content
10193

102-
10394
Once you have a list of items that you want to include in your app settings page, consider these guidelines:
10495

105-
- Group similar or related settings under one settings label.
96+
- Group similar or related settings under one section header.
10697
- Try to keep the total number of settings to a maximum of four or five.
107-
- Display the same settings regardless of the app context. If some settings aren't relevant in a certain context, disable those in the app settings flyout.
108-
- Use descriptive, one-word labels for settings. For example, name the setting "Accounts" instead of "Account settings" for account-related settings. If you only want one option for your settings and the settings don't lend themselves to a descriptive label, use "Options" or "Defaults."
109-
- If a setting directly links to the web instead of to a flyout, let the user know this with a visual clue, such as "Help (online)" or "Web forums" styled as a [hyperlink](../controls/hyperlinks.md). Consider grouping multiple links to the web into a flyout with a single setting. For example, an "About" setting could open a flyout with links to your terms of use, privacy policy, and app support.
110-
- Combine less-used settings into a single entry so that more common settings can each have their own entry. Put content or links that only contain information in an "About" setting.
111-
- Don't duplicate the functionality in the "Permissions" pane. Windows provides this pane by default and you can't modify it.
112-
113-
- Add settings content to Settings flyouts
114-
- Present content from top to bottom in a single column, scrollable if necessary. Limit scrolling to a maximum of twice the screen height.
98+
- Display the same settings regardless of the app context. If some settings aren't relevant in a certain context, disable the `SettingsCard` by setting `IsEnabled` to `false`.
99+
- Use descriptive, one-word labels for settings headers. For example, name the setting "Accounts" instead of "Account settings" for account-related settings.
100+
- If a setting directly links to the web, use a clickable `SettingsCard` with `IsClickEnabled="True"` and an appropriate action icon to indicate external navigation.
101+
- Combine less-used settings into a `SettingsExpander` so that common settings can each have their own `SettingsCard`. Put content or links that only contain information in an "About" section.
102+
- Present content from top to bottom in a single column, scrollable if necessary.
115103
- Use the following controls for app settings:
116104

117105
- [Toggle switches](../controls/toggles.md): To let users set values on or off.
118106
- [Radio buttons](../controls/radio-button.md): To let users choose one item from a set of up to 5 mutually exclusive, related options.
119-
- [Text input box](../controls/text-block.md): To let users enter text. Use the type of text input box that corresponds to the type of text you're getting from the user, such as an email or password.
120-
- [Hyperlinks](../controls/hyperlinks.md): To take the user to another page within the app or to an external website. When a user clicks a hyperlink, the Settings flyout will be dismissed.
121-
- [Buttons](../controls/buttons.md): To let users initiate an immediate action without dismissing the current Settings flyout.
122-
- Add a descriptive message if one of the controls is disabled. Place this message above the disabled control.
123-
- Animate content and controls as a single block after the Settings flyout and header have animated. Animate content using the [**enterPage**](/previous-versions/windows/apps/br212672(v=win.10)) or [**EntranceThemeTransition**](/uwp/api/Windows.UI.Xaml.Media.Animation.EntranceThemeTransition) animations with a 100px left offset.
124-
- Use section headers, paragraphs, and labels to aid organize and clarify content, if necessary.
125-
- If you need to repeat settings, use an additional level of UI or an expand/collapse model, but avoid hierarchies deeper than two levels. For example, a weather app that provides per-city settings could list the cities and let the user tap on the city to either open a new flyout or expand to show the settings options.
126-
- If loading controls or web content takes time, use an indeterminate progress control to indicate to users that info is loading. For more info, see [Guidelines for progress controls](../controls/progress-controls.md).
127-
- Don't use buttons for navigation or to commit changes. Use hyperlinks to navigate to other pages, and instead of using a button to commit changes, automatically save changes to app settings when a user dismisses the Settings flyout.
128-
129-
107+
- [Combo boxes](../controls/combo-box.md): To let users choose from a set of options in a compact dropdown.
108+
- [Text input boxes](../controls/text-box.md): To let users enter text. Use the type of text input box that corresponds to the type of text you're getting from the user, such as an email or password.
109+
- [Hyperlinks](../controls/hyperlinks.md): To take the user to another page within the app or to an external website.
110+
- [Buttons](../controls/buttons.md): To let users initiate an immediate action.
111+
- Add a descriptive message if one of the controls is disabled. Use the `Description` property of `SettingsCard` to explain why the setting is unavailable.
112+
- When a user changes a setting, the app should immediately reflect the change — don't require a confirmation button.
130113

131114
## Related articles
132115

116+
* [SettingsCard and SettingsExpander (Windows Community Toolkit)](/dotnet/communitytoolkit/windows/settingscontrols/settingscard)
133117
* [Command design basics](../basics/commanding-basics.md)
134118
* [Guidelines for progress controls](../controls/progress-controls.md)
135-
* [Store and retrieve app data](./store-and-retrieve-app-data.md)
136-
* [**EntranceThemeTransition**](/uwp/api/Windows.UI.Xaml.Media.Animation.EntranceThemeTransition)
119+
* [Store and retrieve app data](../../develop/data/store-and-retrieve-app-data.md)
-13.7 KB
Loading
21 KB
Loading
-75.3 KB
Loading
17.2 KB
Loading

hub/apps/design/guidelines-overview.md

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -68,11 +68,6 @@ Use these fundamentals as a guide throughout your design process—whether you'r
6868
:::column-end:::
6969
:::row-end:::
7070
:::row:::
71-
:::column:::
72-
[![Sound icon](./images/tile-sound.png)](./style/sound.md)<br>
73-
**[Sound](./style/sound.md)**<br>
74-
Use audio cues to provide feedback, reinforce actions, and support accessibility.
75-
:::column-end:::
7671
:::column:::
7772
[![Typography icon](./images/tile-typography.png)](./signature-experiences/typography.md)<br>
7873
**[Typography](./signature-experiences/typography.md)**<br>
@@ -83,19 +78,21 @@ Use these fundamentals as a guide throughout your design process—whether you'r
8378
**[Usability](./usability/index.md)**<br>
8479
Ensure your app is easy to use through intuitive interactions, clear affordances, and accessibility.
8580
:::column-end:::
86-
:::row-end:::
87-
88-
:::row:::
8981
:::column:::
9082
[![Widgets icon](./images/tile-widgets.png)](./widgets/index.md)<br>
9183
**[Widgets](./widgets/index.md)**<br>
9284
Extend your app with glanceable, interactive surfaces that surface key information and actions.
9385
:::column-end:::
86+
:::row-end:::
87+
88+
:::row:::
9489
:::column:::
9590
[![Writing icon](./images/tile-writing.png)](style/writing-style.md )<br>
9691
**[Writing](./style/writing-style.md )**<br>
9792
Use clear, concise, and helpful language to improve understanding and reduce cognitive load.
9893
:::column-end:::
9994
:::column:::
10095
:::column-end:::
96+
:::column:::
97+
:::column-end:::
10198
:::row-end:::

hub/apps/design/toc.yml

Lines changed: 13 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,6 @@ items:
6868
href: motion/directionality-and-gravity.md
6969
- name: Navigation
7070
href: basics/navigation-basics.md
71-
- name: Sound
72-
href: style/sound.md
7371
- name: Typography
7472
href: signature-experiences/typography.md
7573
- name: Usability
@@ -82,24 +80,20 @@ items:
8280
href: accessibility/accessibility-overview.md
8381
- name: Designing inclusive software
8482
href: accessibility/designing-inclusive-software.md
85-
- name: App settings
86-
items:
87-
- name: Guidelines for app settings
88-
href: app-settings/guidelines-for-app-settings.md
89-
- name: Store and retrieve app settings and data
90-
href: app-settings/store-and-retrieve-app-data.md
91-
- name: Design your app for bidirectional text
92-
href: globalizing/design-for-bidi-text.md
83+
- name: Designing a settings page
84+
href: app-settings/guidelines-for-app-settings.md
85+
- name: Design your app for bidirectional text
86+
href: globalizing/design-for-bidi-text.md
87+
- name: In-app help
88+
items:
89+
- name: Guidelines for app help
90+
href: in-app-help/guidelines-for-app-help.md
91+
- name: Instructional UI
92+
href: in-app-help/instructional-ui.md
9393
- name: In-app help
94-
items:
95-
- name: Guidelines for app help
96-
href: in-app-help/guidelines-for-app-help.md
97-
- name: Instructional UI
98-
href: in-app-help/instructional-ui.md
99-
- name: In-app help
100-
href: in-app-help/in-app-help.md
101-
- name: External help
102-
href: in-app-help/external-help.md
94+
href: in-app-help/in-app-help.md
95+
- name: External help
96+
href: in-app-help/external-help.md
10397
- name: Widgets
10498
items:
10599
- name: Overview
@@ -110,8 +104,6 @@ items:
110104
href: widgets/widgets-states-and-ui.md
111105
- name: Interaction design guidance
112106
href: widgets/widgets-interaction-design.md
113-
- name: Create a template with the Adaptive Card Designer
114-
href: widgets/widgets-create-a-template.md
115107
- name: Integrate with the widget picker
116108
href: widgets/widgets-picker-integration.md
117109
- name: Writing

hub/apps/design/usability/index.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ App settings let you the user customize your app, optimizing it for their indivi
179179
<p>Best practices for creating and displaying app settings.</p>
180180
:::column-end:::
181181
:::column:::
182-
<h3><a href="../app-settings/store-and-retrieve-app-data.md">Store and retrieve app data</a></h3>
182+
<h3><a href="../../develop/data/store-and-retrieve-app-data.md">Store and retrieve app data</a></h3>
183183
<p>How to store and retrieve local, roaming, and temporary app data.</p>
184184
:::column-end:::
185185
:::row-end:::
@@ -201,7 +201,7 @@ App settings let you the user customize your app, optimizing it for their indivi
201201
<div class="cardPadding">
202202
<div class="card">
203203
<div class="cardText">
204-
<p><b><a href="../app-settings/store-and-retrieve-app-data.md">Store and retrieve app data</a></b><br/>How to store and retrieve local, roaming, and temporary app data.</p>
204+
<p><b><a href="../../develop/data/store-and-retrieve-app-data.md">Store and retrieve app data</a></b><br/>How to store and retrieve local, roaming, and temporary app data.</p>
205205
</div>
206206
</div>
207207
</div>

0 commit comments

Comments
 (0)