diff --git a/.github/ISSUE_TEMPLATE/0-customer-feedback-repo.yml b/.github/ISSUE_TEMPLATE/0-customer-feedback-repo.yml
new file mode 100644
index 0000000000..16f29e9e4e
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/0-customer-feedback-repo.yml
@@ -0,0 +1,35 @@
+name: "Post a general documentation issue using the repo link"
+title: ""
+description: >-
+ Post an issue for Windows developer docs. Use the feedback link from the bottom of the learn.microsoft.com page to link the associated doc or this template for a general issue.
+ - "needs-triage"
+body:
+ - type: markdown
+ attributes:
+ value: "## Enter your feedback"
+ - type: markdown
+ attributes:
+ value: Select the issue type, and describe the issue in the text box below. Add as much detail as needed to help us resolve the issue.
+ - type: dropdown
+ id: issue-type
+ attributes:
+ label: Type of issue
+ options:
+ - Typo
+ - Code doesn't work
+ - Missing information
+ - Outdated article
+ - Other (describe below)
+ validations:
+ required: true
+ - type: textarea
+ id: userfeedback
+ validations:
+ required: true
+ attributes:
+ label: Feedback
+ description: >-
+ If possible, please provide extended details that will add context and help the team update
+ the documentation. Additional details not needed for typos, grammar, formatting, etc.
+ For technical or factual errors, please include code snippets and output to show how the
+ documentation is incorrect.
diff --git a/.github/ISSUE_TEMPLATE/1-customer-feedback.yml b/.github/ISSUE_TEMPLATE/1-customer-feedback.yml
new file mode 100644
index 0000000000..693cae9102
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/1-customer-feedback.yml
@@ -0,0 +1,73 @@
+name: "Post a documentation issue"
+title: ""
+description: >-
+ Post an issue specific to Windows dev docs. ⛔ This template connects to the feedback link on the bottom of learn.microsoft.com. If posting an issue from the GitHub repo, choose a different template.⛔
+labels:
+ - "needs-triage"
+body:
+ - type: markdown
+ attributes:
+ value: "## Enter your feedback"
+ - type: markdown
+ attributes:
+ value: Select the issue type, and describe the issue in the text box below. Add as much detail as needed to help us resolve the issue.
+ - type: dropdown
+ id: issue-type
+ attributes:
+ label: Type of issue
+ options:
+ - Typo
+ - Code doesn't work
+ - Missing information
+ - Outdated article
+ - Other (describe below)
+ validations:
+ required: true
+ - type: textarea
+ id: userfeedback
+ validations:
+ required: true
+ attributes:
+ label: Feedback
+ description: >-
+ If possible, please provide extended details that will add context and help the team update
+ the documentation. Additional details not needed for typos, grammar, formatting, etc.
+ For technical or factual errors, please include code snippets and output to show how the
+ documentation is incorrect.
+ - type: markdown
+ attributes:
+ value: "## 🚧 Article information 🚧"
+ - type: markdown
+ attributes:
+ value: "*Don't modify the following fields*. They are automatically filled in for you. Doing so will disconnect your issue from the affected article. *Don't edit them*."
+ - type: input
+ id: pageUrl
+ validations:
+ required: true
+ attributes:
+ label: Page URL
+ - type: input
+ id: contentSourceUrl
+ validations:
+ required: true
+ attributes:
+ label: Content source URL
+ - type: input
+ id: author
+ validations:
+ required: true
+ attributes:
+ label: Author
+ description: GitHub Id of the author
+ - type: input
+ id: documentVersionIndependentId
+ validations:
+ required: true
+ attributes:
+ label: Document Id
+ - type: input
+ id: platformId
+ validations:
+ required: true
+ attributes:
+ label: Platform Id
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
new file mode 100644
index 0000000000..8768252099
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -0,0 +1,17 @@
+blank_issues_enabled: false
+contact_links:
+ - name: Report issues, bugs, or file feature requests related to Windows development.
+ url: https://www.microsoft.com/en-us/windowsinsider/feedbackhub/fb
+ about: Windows Feedback Hub (for reporting issues, bugs, or feature requests)
+ - name: Report issues, bugs, or file feature requests for PowerToys.
+ url: https://github.com/Microsoft/powertoys/issues
+ about: Windows PowerToys product repo on GitHub (for reporting issues, bugs, or feature requests)
+ - name: Report issues, bugs, or file feature requests for Windows Package Manager.
+ url: https://github.com/microsoft/winget-cli/issues
+ about: Windows Package Manager product repo on GitHub (for reporting issues, bugs, or feature requests)
+ - name: Report issues, bugs, or file feature requests for Windows Terminal.
+ url: https://github.com/Microsoft/terminal/issues
+ about: Windows Terminal product repo on GitHub (for reporting issues, bugs, or feature requests)
+ - name: Report issues, bugs, or file feature requests for Windows Subsystem for Linux.
+ url: https://github.com/Microsoft/WSL/issues
+ about: Report issues, bugs, or file feature requests for Windows Subsystem for Linux.
diff --git a/.openpublishing.build.ps1 b/.openpublishing.build.ps1
deleted file mode 100644
index f442860e08..0000000000
--- a/.openpublishing.build.ps1
+++ /dev/null
@@ -1,18 +0,0 @@
-param(
- [string]$buildCorePowershellUrl = "https://opbuildstorageprod.blob.core.windows.net/opps1container/.openpublishing.buildcore.ps1",
- [string]$parameters
-)
-# Main
-$errorActionPreference = 'Stop'
-
-# Step-1 Download buildcore script to local
-echo "download build core script to local with source url: $buildCorePowershellUrl"
-$repositoryRoot = Split-Path -Parent $MyInvocation.MyCommand.Definition
-$buildCorePowershellDestination = "$repositoryRoot\.openpublishing.buildcore.ps1"
-Invoke-WebRequest $buildCorePowershellUrl -OutFile $buildCorePowershellDestination
-
-# Step-2: Run build core
-echo "run build core script with parameters: $parameters"
-$arguments = "-parameters:'$parameters'"
-Invoke-Expression "$buildCorePowershellDestination $arguments"
-exit $LASTEXITCODE
\ No newline at end of file
diff --git a/.openpublishing.publish.config.json b/.openpublishing.publish.config.json
index a799014aca..6cc79eb63b 100644
--- a/.openpublishing.publish.config.json
+++ b/.openpublishing.publish.config.json
@@ -65,12 +65,11 @@
],
"notification_subscribers": [],
"sync_notification_subscribers": [
- "quradic@microsoft.com"
+ "jkendir@microsoft.com"
],
"branches_to_filter": [],
"git_repository_url_open_to_public_contributors": "https://github.com/MicrosoftDocs/windows-dev-docs",
"git_repository_branch_open_to_public_contributors": "docs",
- "skip_source_output_uploading": false,
"need_preview_pull_request": true,
"resolve_user_profile_using_github": true,
"dependent_repositories": [
@@ -83,7 +82,7 @@
{
"path_to_root": "samples-xaml-gallery",
"url": "https://github.com/microsoft/Xaml-Controls-Gallery",
- "branch": "master",
+ "branch": "main",
"branch_mapping": {}
},
{
@@ -111,6 +110,7 @@
}
},
"docs_build_engine": {},
+ "skip_source_output_uploading": false,
"contribution_branch_mappings": {},
"need_generate_pdf_url_template": true,
"need_generate_pdf": false
diff --git a/.openpublishing.redirection.json b/.openpublishing.redirection.json
index ba008e287f..e01e0bd710 100644
--- a/.openpublishing.redirection.json
+++ b/.openpublishing.redirection.json
@@ -1,7587 +1,10614 @@
{
"redirections": [
{
- "source_path": "uwp/monetize/get-xbox-live-analytics.md",
- "redirect_url": "/windows/uwp/publish/xbox-analytics-report",
+ "source_path": "hub/android/emulator.md",
+ "redirect_url": "/windows/dev-environment/",
"redirect_document_id": false
},
{
- "source_path": "uwp/monetize/get-xbox-live-achievements-data.md",
- "redirect_url": "/windows/uwp/publish/xbox-analytics-report",
+ "source_path": "hub/android/native-android.md",
+ "redirect_url": "/windows/dev-environment/",
"redirect_document_id": false
},
{
- "source_path": "uwp/monetize/get-xbox-live-health-data.md",
- "redirect_url": "/windows/uwp/publish/xbox-analytics-report",
+ "source_path": "hub/android/overview.md",
+ "redirect_url": "/windows/dev-environment/",
"redirect_document_id": false
},
{
- "source_path": "uwp/monetize/get-xbox-live-game-hub-data.md",
- "redirect_url": "/windows/uwp/publish/xbox-analytics-report",
+ "source_path": "hub/android/pwa.md",
+ "redirect_url": "/windows/dev-environment/",
"redirect_document_id": false
},
{
- "source_path": "uwp/monetize/get-xbox-live-club-data.md",
- "redirect_url": "/windows/uwp/publish/xbox-analytics-report",
+ "source_path": "hub/apps/how-tos/uno-multiplatform.md",
+ "redirect_url": "/previous-versions/windows/app-dev/how-tos/uno-multiplatform",
"redirect_document_id": false
},
- {
- "source_path": "uwp/monetize/get-xbox-live-multiplayer-data.md",
- "redirect_url": "/windows/uwp/publish/xbox-analytics-report",
+ {
+ "source_path": "hub/apps/whats-new/windows-11-build-22000.md",
+ "redirect_url": "/windows/apps/whats-new/whats-new-for-developers",
"redirect_document_id": false
},
{
- "source_path": "uwp/monetize/get-xbox-live-concurrent-usage-data.md",
- "redirect_url": "/windows/uwp/publish/xbox-analytics-report",
+ "source_path": "hub/apps/get-started/uno-simple-photo-viewer.md",
+ "redirect_url": "/previous-versions/windows/app-dev/get-started/uno-simple-photo-viewer",
"redirect_document_id": false
},
{
- "source_path": "uwp/debug-test-perf/device-portal-hololens.md",
- "redirect_url": "/windows/mixed-reality/develop/platform-capabilities-and-apis/using-the-windows-device-portal",
+ "source_path": "hub/apps/windows-dotnet-maui/index.md",
+ "redirect_url": "/previous-versions/windows/app-dev/windows-dotnet-maui/index",
"redirect_document_id": false
},
{
- "source_path": "uwp/debug-test-perf/device-portal-api-hololens.md",
- "redirect_url": "/windows/mixed-reality/develop/platform-capabilities-and-apis/device-portal-api-reference",
+ "source_path": "hub/apps/windows-dotnet-maui/tutorial-csharp-ui-maui-toolkit.md",
+ "redirect_url": "/previous-versions/windows/app-dev/windows-dotnet-maui/tutorial-csharp-ui-maui-toolkit",
"redirect_document_id": false
},
{
- "source_path": "uwp/get-started/get-uwp-app-samples.md",
- "redirect_url": "/windows/apps/get-started/samples",
+ "source_path": "hub/apps/windows-dotnet-maui/tutorial-graph-api.md",
+ "redirect_url": "/previous-versions/windows/app-dev/windows-dotnet-maui/tutorial-graph-api",
"redirect_document_id": false
- },
+ },
{
- "source_path": "uwp/home.md",
- "redirect_url": "/windows/uwp/",
+ "source_path": "hub/apps/windows-dotnet-maui/walkthrough-first-app.md",
+ "redirect_url": "/previous-versions/windows/app-dev/windows-dotnet-maui/walkthrough-first-app",
"redirect_document_id": false
},
{
- "source_path": "uwp/app-to-app/use-edp-to-protect-enterprise-data-transferred-between-apps.md",
- "redirect_url": "/windows/uwp/enterprise/wip-dev-guide",
+ "source_path": "uwp/enterprise/customer-database-app-structure.md",
+ "redirect_url": "/previous-versions/windows/uwp/enterprise/customer-database-app-structure",
"redirect_document_id": false
},
{
- "source_path": "uwp/audio-video-camera/capture-photos-and-video-with-mediacapture.md",
- "redirect_url": "/windows/uwp/audio-video-camera/",
+ "source_path": "uwp/enterprise/customer-database-tutorial.md",
+ "redirect_url": "/previous-versions/windows/uwp/enterprise/customer-database-tutorial",
"redirect_document_id": false
},
- {
- "source_path": "uwp/contacts-and-calendar/integrating-social-feeds-into-contact-cards.md",
- "redirect_url": "/windows/uwp/contacts-and-calendar",
+ {
+ "source_path": "hub/apps/get-started/sign-up.md",
+ "redirect_url": "/windows/apps/publish/partner-center/open-a-developer-account",
"redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/dialogs-popups-menus.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/dialogs-and-flyouts",
+ "source_path": "uwp/enterprise/enterprise-shared-storage.md",
+ "redirect_url": "/previous-versions/windows/uwp/enterprise/enterprise-shared-storage",
"redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/nav-pane.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/navigationview",
+ "source_path": "uwp/enterprise/index.md",
+ "redirect_url": "/previous-versions/windows/uwp/enterprise/index",
"redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/segoe-ui-symbol-font.md",
- "redirect_url": "/windows/uwp/design/style/segoe-ui-symbol-font",
+ "source_path": "uwp/enterprise/wip-dev-guide.md",
+ "redirect_url": "/previous-versions/windows/uwp/enterprise/wip-dev-guide",
"redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/spell-checking-and-prediction.md",
- "redirect_url": "/windows/uwp/controls-and-patterns/text-controls",
+ "source_path": "uwp/enterprise/wip-hub.md",
+ "redirect_url": "/previous-versions/windows/uwp/enterprise/wip-hub",
"redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/styling-controls.md",
- "redirect_url": "/windows/uwp/controls-and-patterns/xaml-styles",
+ "source_path": "uwp/porting/desktop-to-uwp-migrate.md",
+ "redirect_url": "/previous-versions/windows/uwp/porting/desktop-to-uwp-migrate",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/hub.md",
- "redirect_url": "/windows/uwp/design/basics/navigation-basics",
+ "source_path": "uwp/porting/index.md",
+ "redirect_url": "/previous-versions/windows/uwp/porting/index",
"redirect_document_id": false
},
{
- "source_path": "uwp/files/protect-your-enterprise-data-with-edp.md",
- "redirect_url": "/windows/uwp/files/../enterprise/wip-dev-guide",
+ "source_path": "uwp/porting/w8x-to-uwp-case-study-bookstore1.md",
+ "redirect_url": "/previous-versions/windows/uwp/porting/w8x-to-uwp-case-study-bookstore1",
"redirect_document_id": false
},
{
- "source_path": "uwp/files/use-edp-to-protect-streams-and-buffers.md",
- "redirect_url": "/windows/uwp/files/../enterprise/wip-dev-guide",
+ "source_path": "uwp/porting/w8x-to-uwp-case-study-bookstore2.md",
+ "redirect_url": "/previous-versions/windows/uwp/porting/w8x-to-uwp-case-study-bookstore2",
"redirect_document_id": false
},
{
- "source_path": "uwp/get-started/application-development-for-windows-as-a-service.md",
- "redirect_url": "/windows/uwp/get-started/../updates-and-versions/application-development-for-windows-as-a-service/",
+ "source_path": "uwp/porting/w8x-to-uwp-case-study-quizgame.md",
+ "redirect_url": "/previous-versions/windows/uwp/porting/w8x-to-uwp-case-study-quizgame",
"redirect_document_id": false
},
{
- "source_path": "uwp/get-started/create-js-apps.md",
- "redirect_url": "/windows/uwp/get-started/your-first-app#javascript-and-html",
+ "source_path": "uwp/porting/w8x-to-uwp-input-and-sensors.md",
+ "redirect_url": "/previous-versions/windows/uwp/porting/w8x-to-uwp-input-and-sensors",
"redirect_document_id": false
},
{
- "source_path": "uwp/get-started/radialcontroller-walkthrough.md",
- "redirect_url": "/windows/uwp/design/input/radialcontroller-walkthrough/",
+ "source_path": "uwp/porting/w8x-to-uwp-porting-to-a-uwp-project.md",
+ "redirect_url": "/previous-versions/windows/uwp/porting/w8x-to-uwp-porting-to-a-uwp-project",
"redirect_document_id": false
},
{
- "source_path": "uwp/get-started/ink-walkthrough.md",
- "redirect_url": "/windows/uwp/design/input/ink-walkthrough/",
+ "source_path": "uwp/porting/w8x-to-uwp-porting-xaml-and-ui.md",
+ "redirect_url": "/previous-versions/windows/uwp/porting/w8x-to-uwp-porting-xaml-and-ui",
"redirect_document_id": false
},
{
- "source_path": "uwp/get-started/xaml-basics-intro.md",
- "redirect_url": "/windows/uwp/design/basics/xaml-basics-ui",
+ "source_path": "uwp/porting/w8x-to-uwp-root.md",
+ "redirect_url": "/previous-versions/windows/uwp/porting/w8x-to-uwp-root",
"redirect_document_id": false
},
{
- "source_path": "uwp/get-started/xaml-basics-ui.md",
- "redirect_url": "/windows/uwp/design/basics/xaml-basics-ui",
+ "source_path": "uwp/porting/w8x-to-uwp-troubleshooting.md",
+ "redirect_url": "/previous-versions/windows/uwp/porting/w8x-to-uwp-troubleshooting",
"redirect_document_id": false
},
{
- "source_path": "uwp/get-started/xaml-basics-style.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/xaml-styles",
+ "source_path": "uwp/porting/wpsl-to-uwp-business-and-data.md",
+ "redirect_url": "/previous-versions/windows/uwp/porting/wpsl-to-uwp-business-and-data",
"redirect_document_id": false
},
{
- "source_path": "uwp/get-started/xaml-basics-adaptive-layout.md",
- "redirect_url": "/windows/uwp/design/basics/xaml-basics-adaptive-layout",
+ "source_path": "uwp/porting/wpsl-to-uwp-case-study-bookstore1.md",
+ "redirect_url": "/previous-versions/windows/uwp/porting/wpsl-to-uwp-case-study-bookstore1",
"redirect_document_id": false
},
{
- "source_path": "uwp/get-started/xaml-basics-data-binding.md",
- "redirect_url": "/windows/uwp/data-binding/xaml-basics-data-binding",
+ "source_path": "uwp/porting/wpsl-to-uwp-case-study-bookstore2.md",
+ "redirect_url": "/previous-versions/windows/uwp/porting/wpsl-to-uwp-case-study-bookstore2",
"redirect_document_id": false
},
{
- "source_path": "uwp/get-started/choose-a-uwp-version.md",
- "redirect_url": "/windows/uwp/get-started/../updates-and-versions/choose-a-uwp-version/",
+ "source_path": "uwp/porting/wpsl-to-uwp-form-factors-and-ux.md",
+ "redirect_url": "/previous-versions/windows/uwp/porting/wpsl-to-uwp-form-factors-and-ux",
"redirect_document_id": false
},
{
- "source_path": "uwp/get-started/enable-your-device-for-development.md",
- "redirect_url": "/windows/apps/get-started/enable-your-device-for-development",
+ "source_path": "uwp/porting/wpsl-to-uwp-input-and-sensors.md",
+ "redirect_url": "/previous-versions/windows/uwp/porting/wpsl-to-uwp-input-and-sensors",
"redirect_document_id": false
},
{
- "source_path": "uwp/get-started/get-set-up.md",
- "redirect_url": "/windows/apps/windows-app-sdk/set-up-your-development-environment",
+ "source_path": "uwp/porting/wpsl-to-uwp-namespace-and-class-mappings.md",
+ "redirect_url": "/previous-versions/windows/uwp/porting/wpsl-to-uwp-namespace-and-class-mappings",
"redirect_document_id": false
},
{
- "source_path": "hub/apps/get-started/get-set-up.md",
- "redirect_url": "/windows/apps/windows-app-sdk/set-up-your-development-environment",
+ "source_path": "uwp/porting/wpsl-to-uwp-porting-to-a-uwp-project.md",
+ "redirect_url": "/previous-versions/windows/uwp/porting/wpsl-to-uwp-porting-to-a-uwp-project",
"redirect_document_id": false
},
{
- "source_path": "uwp/get-started/sign-up.md",
- "redirect_url": "/windows/apps/get-started/sign-up",
+ "source_path": "uwp/porting/wpsl-to-uwp-porting-xaml-and-ui.md",
+ "redirect_url": "/previous-versions/windows/uwp/porting/wpsl-to-uwp-porting-xaml-and-ui",
"redirect_document_id": false
},
{
- "source_path": "uwp/get-started/adding-webvr-to-a-babylonjs-game.md",
- "redirect_url": "/windows/apps/get-started/",
+ "source_path": "uwp/porting/wpsl-to-uwp-root.md",
+ "redirect_url": "/previous-versions/windows/uwp/porting/wpsl-to-uwp-root",
"redirect_document_id": false
},
{
- "source_path": "uwp/get-started/create-a-hello-world-app-js-uwp.md",
- "redirect_url": "/windows/apps/get-started/",
+ "source_path": "uwp/porting/wpsl-to-uwp-troubleshooting.md",
+ "redirect_url": "/previous-versions/windows/uwp/porting/wpsl-to-uwp-troubleshooting",
"redirect_document_id": false
},
{
- "source_path": "uwp/get-started/get-started-tutorial-fullstack-web-app.md",
- "redirect_url": "/windows/uwp/get-started/",
+ "source_path": "uwp/monetize/ad-mediation-service.md",
+ "redirect_url": "/previous-versions/windows/uwp/monetize/ad-mediation-service",
"redirect_document_id": false
},
{
- "source_path": "uwp/get-started/get-started-tutorial-game-js2d.md",
- "redirect_url": "/windows/uwp/get-started/",
+ "source_path": "uwp/monetize/adcontrol-in-html-5-and-javascript.md",
+ "redirect_url": "/previous-versions/windows/uwp/monetize/adcontrol-in-html-5-and-javascript",
"redirect_document_id": false
},
{
- "source_path": "uwp/get-started/get-started-tutorial-game-js3d.md",
- "redirect_url": "/windows/uwp/get-started/",
+ "source_path": "uwp/monetize/adcontrol-in-xaml-and--net.md",
+ "redirect_url": "/previous-versions/windows/uwp/monetize/adcontrol-in-xaml-and--net",
"redirect_document_id": false
},
{
- "source_path": "uwp/get-started/get-started-tutorial-game-mg2d.md",
- "redirect_url": "/windows/uwp/get-started/",
+ "source_path": "uwp/monetize/add-advertisements-to-video-content.md",
+ "redirect_url": "/previous-versions/windows/uwp/monetize/add-advertisements-to-video-content",
"redirect_document_id": false
},
{
- "source_path": "uwp/graphics/composition-animation.md",
- "redirect_url": "/windows/uwp/composition/composition-animation",
+ "source_path": "uwp/monetize/banner-ads.md",
+ "redirect_url": "/previous-versions/windows/uwp/monetize/banner-ads",
"redirect_document_id": false
},
{
- "source_path": "uwp/graphics/composition-brushes.md",
- "redirect_url": "/windows/uwp/composition/composition-brushes",
+ "source_path": "uwp/monetize/best-practices-for-ads-in-apps.md",
+ "redirect_url": "/previous-versions/windows/uwp/monetize/best-practices-for-ads-in-apps",
"redirect_document_id": false
},
{
- "source_path": "uwp/graphics/composition-effects.md",
- "redirect_url": "/windows/uwp/composition/composition-effects",
+ "source_path": "uwp/monetize/developer-walkthroughs.md",
+ "redirect_url": "/previous-versions/windows/uwp/monetize/developer-walkthroughs",
"redirect_document_id": false
},
{
- "source_path": "uwp/graphics/composition-native-interop.md",
- "redirect_url": "/windows/uwp/composition/composition-native-interop",
+ "source_path": "uwp/monetize/display-ads-in-your-app.md",
+ "redirect_url": "/previous-versions/windows/uwp/monetize/display-ads-in-your-app",
"redirect_document_id": false
},
{
- "source_path": "uwp/graphics/composition-visual-tree.md",
- "redirect_url": "/windows/uwp/composition/composition-visual-tree",
+ "source_path": "uwp/monetize/error-handling-in-javascript-walkthrough.md",
+ "redirect_url": "/previous-versions/windows/uwp/monetize/error-handling-in-javascript-walkthrough",
"redirect_document_id": false
},
{
- "source_path": "uwp/graphics/using-the-visual-layer-with-xaml.md",
- "redirect_url": "/windows/uwp/composition/using-the-visual-layer-with-xaml",
+ "source_path": "uwp/monetize/error-handling-in-xamlc-walkthrough.md",
+ "redirect_url": "/previous-versions/windows/uwp/monetize/error-handling-in-xamlc-walkthrough",
"redirect_document_id": false
},
{
- "source_path": "uwp/graphics/visual-layer.md",
- "redirect_url": "/windows/uwp/composition/visual-layer",
+ "source_path": "uwp/monetize/error-handling-with-advertising-libraries.md",
+ "redirect_url": "/previous-versions/windows/uwp/monetize/error-handling-with-advertising-libraries",
"redirect_document_id": false
},
{
- "source_path": "uwp/input-and-devices/guidelines-for-user-interaction.md",
- "redirect_url": "/windows/uwp/input-and-devices/touch-interactions",
+ "source_path": "uwp/monetize/html-and-javascript-troubleshooting-guide.md",
+ "redirect_url": "/previous-versions/windows/uwp/monetize/html-and-javascript-troubleshooting-guide",
"redirect_document_id": false
},
{
- "source_path": "uwp/layout/peer-to-peer-navigation-between-two-pages.md",
- "redirect_url": "/windows/uwp/layout/navigate-between-two-pages",
+ "source_path": "uwp/monetize/install-the-microsoft-advertising-libraries.md",
+ "redirect_url": "/previous-versions/windows/uwp/monetize/install-the-microsoft-advertising-libraries",
"redirect_document_id": false
},
{
- "source_path": "uwp/maps-and-location/controls-map.md",
- "redirect_url": "/windows/uwp/maps-and-location/display-maps#display-map-in-a-control",
+ "source_path": "uwp/monetize/interstitial-ad-sample-code-in-c.md",
+ "redirect_url": "/previous-versions/windows/uwp/monetize/interstitial-ad-sample-code-in-c",
"redirect_document_id": false
},
{
- "source_path": "uwp/maps-and-location/display-maps#map-control",
- "redirect_url": "/windows/uwp/maps-and-location/display-maps#display-map-in-a-control",
+ "source_path": "uwp/monetize/interstitial-ad-sample-code-in-javascript.md",
+ "redirect_url": "/previous-versions/windows/uwp/monetize/interstitial-ad-sample-code-in-javascript",
"redirect_document_id": false
},
{
- "source_path": "uwp/monetize/adcontrol-error-handling.md",
- "redirect_url": "/windows/uwp/monetize/error-handling-in-xamlc-walkthrough",
+ "source_path": "uwp/monetize/interstitial-ads.md",
+ "redirect_url": "/previous-versions/windows/uwp/monetize/interstitial-ads",
"redirect_document_id": false
},
{
- "source_path": "uwp/monetize/adcontrol-events-in-c.md",
- "redirect_url": "/windows/uwp/monetize/adcontrol-in-xaml-and--net",
+ "source_path": "uwp/monetize/known-issues-for-the-advertising-libraries.md",
+ "redirect_url": "/previous-versions/windows/uwp/monetize/known-issues-for-the-advertising-libraries",
"redirect_document_id": false
},
{
- "source_path": "uwp/monetize/adcontrol-events-in-javascript.md",
- "redirect_url": "/windows/uwp/monetize/adcontrol-in-html-5-and-javascript",
+ "source_path": "uwp/monetize/native-ads.md",
+ "redirect_url": "/previous-versions/windows/uwp/monetize/native-ads",
"redirect_document_id": false
},
{
- "source_path": "uwp/monetize/adcontrol-in-windows-phone-silverlight.md",
- "redirect_url": "/previous-versions/windows/apps/mt842563(v=win.10)",
+ "source_path": "uwp/monetize/optimize-ad-unit-viewability.md",
+ "redirect_url": "/previous-versions/windows/uwp/monetize/optimize-ad-unit-viewability",
"redirect_document_id": false
},
{
- "source_path": "uwp/monetize/add-ads-to-apps-with-microsoft-advertising.md",
- "redirect_url": "/windows/uwp/monetize/display-ads-in-your-app",
+ "source_path": "uwp/monetize/release-notes-for-the-advertising-libraries.md",
+ "redirect_url": "/previous-versions/windows/uwp/monetize/release-notes-for-the-advertising-libraries",
"redirect_document_id": false
},
{
- "source_path": "uwp/monetize/add-and-use-the-ad-mediator-control.md",
- "redirect_url": "/previous-versions/windows/apps/dn792120(v=win.10",
+ "source_path": "uwp/monetize/set-up-ad-units-in-your-app.md",
+ "redirect_url": "/previous-versions/windows/uwp/monetize/set-up-ad-units-in-your-app",
"redirect_document_id": false
},
{
- "source_path": "uwp/monetize/additional-help.md",
- "redirect_url": "/windows/uwp/monetize/display-ads-in-your-app#additional-help",
+ "source_path": "uwp/monetize/supported-ad-sizes-for-banner-ads.md",
+ "redirect_url": "/previous-versions/windows/uwp/monetize/supported-ad-sizes-for-banner-ads",
"redirect_document_id": false
},
{
- "source_path": "uwp/monetize/claim-a-targeted-offer.md",
- "redirect_url": "/windows/uwp/monetize/manage-targeted-offers-using-windows-store-services",
+ "source_path": "uwp/monetize/ui-and-user-experience-guidelines.md",
+ "redirect_url": "/previous-versions/windows/uwp/monetize/ui-and-user-experience-guidelines",
"redirect_document_id": false
},
{
- "source_path": "uwp/monetize/code-samples.md",
- "redirect_url": "/windows/uwp/monetize/developer-walkthroughs",
+ "source_path": "uwp/monetize/update-your-app-to-the-latest-advertising-libraries.md",
+ "redirect_url": "/previous-versions/windows/uwp/monetize/update-your-app-to-the-latest-advertising-libraries",
"redirect_document_id": false
},
{
- "source_path": "uwp/monetize/create-an-adcontrol-in-javascript.md",
- "redirect_url": "/windows/uwp/monetize/adcontrol-in-html-5-and-javascript",
+ "source_path": "uwp/monetize/windows-premium-ads-publishers-program.md",
+ "redirect_url": "/previous-versions/windows/uwp/monetize/windows-premium-ads-publishers-program",
"redirect_document_id": false
},
{
- "source_path": "uwp/monetize/developer-information.md",
- "redirect_url": "/windows/uwp/monetize/display-ads-in-your-app",
+ "source_path": "uwp/monetize/xaml-and-c-troubleshooting-guide.md",
+ "redirect_url": "/previous-versions/windows/uwp/monetize/xaml-and-c-troubleshooting-guide",
"redirect_document_id": false
},
{
- "source_path": "uwp/monetize/display-ads-using-the-microsoft-advertising-libraries.md",
- "redirect_url": "/windows/uwp/monetize/display-ads-in-your-app",
+ "source_path": "hub/powertoys/video-conference-mute.md",
+ "redirect_url": "/previous-versions/windows/powertoys/video-conference-mute",
"redirect_document_id": false
},
{
- "source_path": "uwp/monetize/get-app-failures.md",
- "redirect_url": "/windows/uwp/monetize/get-error-reporting-data",
+ "source_path": "hub/android/wsa/index.md",
+ "redirect_url": "/previous-versions/windows/android/wsa/index",
"redirect_document_id": false
},
{
- "source_path": "uwp/monetize/get-started-with-microsoft-advertising-libraries.md",
- "redirect_url": "/windows/uwp/monetize/display-ads-in-your-app",
+ "source_path": "hub/android/wsa/release-notes.md",
+ "redirect_url": "/previous-versions/windows/android/wsa/release-notes",
"redirect_document_id": false
},
{
- "source_path": "uwp/monetize/html-properties-example.md",
- "redirect_url": "/windows/uwp/monetize/adcontrol-in-html-5-and-javascript",
+ "source_path": "hub/dev-home/environments.md",
+ "redirect_url": "/previous-versions/windows/dev-home/environments",
"redirect_document_id": false
},
{
- "source_path": "uwp/monetize/important-notice-eula.md",
- "redirect_url": "/windows/uwp/monetize/display-ads-in-your-app",
+ "source_path": "hub/dev-home/extensions.md",
+ "redirect_url": "/previous-versions/windows/dev-home/extensions",
"redirect_document_id": false
},
{
- "source_path": "uwp/monetize/install-the-microsoft-universal-ad-client-sdk.md",
- "redirect_url": "/windows/uwp/monetize/microsoft-store-services-sdk",
+ "source_path": "hub/dev-home/index.md",
+ "redirect_url": "/previous-versions/windows/dev-home/index",
"redirect_document_id": false
},
{
- "source_path": "uwp/monetize/migrate-from-admediatorcontrol-to-adcontrol.md",
- "redirect_url": "/windows/uwp/monetize/display-ads-in-your-app",
+ "source_path": "hub/dev-home/setup.md",
+ "redirect_url": "/previous-versions/windows/dev-home/setup",
"redirect_document_id": false
},
{
- "source_path": "uwp/monetize/monetize-your-app-with-the-microsoft-store-engagement-and-monetization-sdk.md",
- "redirect_url": "/windows/uwp/monetize/microsoft-store-services-sdk",
+ "source_path": "hub/dev-home/utilities.md",
+ "redirect_url": "/previous-versions/windows/dev-home/utilities",
"redirect_document_id": false
},
{
- "source_path": "uwp/monetize/select-and-manage-your-ad-networks.md",
- "redirect_url": "/previous-versions/windows/apps/dn792120(v=win.10)",
+ "source_path": "hub/dev-home/windows-customization.md",
+ "redirect_url": "/previous-versions/windows/dev-home/windows-customization",
"redirect_document_id": false
},
{
- "source_path": "uwp/monetize/submit-an-app-with-ads-to-the-windows-store.md",
- "redirect_url": "/windows/uwp/monetize/display-ads-in-your-app",
+ "source_path": "hub/apps/whats-new/latest-docs-updates.md",
+ "redirect_url": "/windows/apps/whats-new/whats-new-for-developers",
"redirect_document_id": false
},
{
- "source_path": "uwp/monetize/submit-your-app-and-configure-ad-mediation.md",
- "redirect_url": "/previous-versions/windows/apps/dn792120(v=win.10)",
+ "source_path": "hub/apps/design/devices/kinect-for-windows.md",
+ "redirect_url": "https://azure.microsoft.com/en-us/products/kinect-dk",
"redirect_document_id": false
},
{
- "source_path": "uwp/monetize/supported-markets-for-microsoft-advertising.md",
- "redirect_url": "/windows/uwp/monetize/display-ads-in-your-app",
+ "source_path": "uwp/xbox-apps/automate-launching-uwp-apps.md",
+ "redirect_url": "/previous-versions/windows/uwp/xbox-apps/automate-launching-uwp-apps",
"redirect_document_id": false
},
{
- "source_path": "uwp/monetize/test-mode-values.md",
- "redirect_url": "/windows/uwp/monetize/set-up-ad-units-in-your-app",
+ "source_path": "uwp/xbox-apps/cpusets-games.md",
+ "redirect_url": "/previous-versions/windows/uwp/xbox-apps/cpusets-games",
"redirect_document_id": false
},
{
- "source_path": "uwp/monetize/test-your-ad-mediation-implementation.md",
- "redirect_url": "/previous-versions/windows/apps/dn792120(v=win.10)",
+ "source_path": "uwp/xbox-apps/dev-home.md",
+ "redirect_url": "/previous-versions/windows/uwp/xbox-apps/dev-home",
"redirect_document_id": false
},
{
- "source_path": "uwp/monetize/troubleshoot-ad-mediation.md",
- "redirect_url": "/previous-versions/windows/apps/dn792120(v=win.10)",
+ "source_path": "uwp/xbox-apps/development-environment-setup.md",
+ "redirect_url": "/previous-versions/windows/uwp/xbox-apps/development-environment-setup",
"redirect_document_id": false
},
{
- "source_path": "uwp/monetize/troubleshooting-guides.md",
- "redirect_url": "/windows/uwp/monetize/known-issues-for-the-advertising-libraries",
+ "source_path": "uwp/xbox-apps/development-lanes-custom-cpp.md",
+ "redirect_url": "/previous-versions/windows/uwp/xbox-apps/development-lanes-custom-cpp",
"redirect_document_id": false
},
{
- "source_path": "uwp/monetize/use-ad-mediation-to-maximize-revenue.md",
- "redirect_url": "/previous-versions/windows/apps/dn792120(v=win.10)",
+ "source_path": "uwp/xbox-apps/development-lanes-html.md",
+ "redirect_url": "/previous-versions/windows/uwp/xbox-apps/development-lanes-html",
"redirect_document_id": false
},
{
- "source_path": "uwp/monetize/what-is-the-difference-admediatorcontrol-or-adcontrol.md",
- "redirect_url": "/windows/uwp/monetize/display-ads-in-your-app",
+ "source_path": "uwp/xbox-apps/development-lanes-landing.md",
+ "redirect_url": "/previous-versions/windows/uwp/xbox-apps/development-lanes-landing",
"redirect_document_id": false
},
{
- "source_path": "uwp/monetize/workflows-for-creating-apps-with-ads.md",
- "redirect_url": "/windows/uwp/monetize/display-ads-in-your-app",
+ "source_path": "uwp/xbox-apps/development-lanes-unity-versioning.md",
+ "redirect_url": "/previous-versions/windows/uwp/xbox-apps/development-lanes-unity-versioning",
"redirect_document_id": false
},
{
- "source_path": "uwp/monetize/xaml-properties-example.md",
- "redirect_url": "/windows/uwp/monetize/adcontrol-in-xaml-and--net",
+ "source_path": "uwp/xbox-apps/development-lanes-unity.md",
+ "redirect_url": "/previous-versions/windows/uwp/xbox-apps/development-lanes-unity",
"redirect_document_id": false
},
{
- "source_path": "uwp/networking/tagging_network_connections_with_edp_identity.md",
- "redirect_url": "/windows/uwp/networking/../enterprise/wip-dev-guide",
+ "source_path": "uwp/xbox-apps/devhome-capture.md",
+ "redirect_url": "/previous-versions/windows/uwp/xbox-apps/devhome-capture",
"redirect_document_id": false
},
{
- "source_path": "uwp/porting/desktop-to-uwp-deploy-and-debug.md",
- "redirect_url": "/windows/uwp/porting/desktop-to-uwp-debug",
+ "source_path": "uwp/xbox-apps/devhome-home.md",
+ "redirect_url": "/previous-versions/windows/uwp/xbox-apps/devhome-home",
"redirect_document_id": false
},
{
- "source_path": "uwp/porting/desktop-to-uwp-signing.md",
- "redirect_url": "/windows/uwp/porting/desktop-to-uwp-debug#test-your-app",
+ "source_path": "uwp/xbox-apps/devhome-live.md",
+ "redirect_url": "/previous-versions/windows/uwp/xbox-apps/devhome-live",
"redirect_document_id": false
},
{
- "source_path": "uwp/porting/update-your-visual-studio-2015-rc-project-to-rtm.md",
- "redirect_url": "/visualstudio/porting/port-migrate-and-upgrade-visual-studio-projects",
+ "source_path": "uwp/xbox-apps/devhome-networking.md",
+ "redirect_url": "/previous-versions/windows/uwp/xbox-apps/devhome-networking",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/about-affiliate-ads.md",
- "redirect_url": "/windows/uwp/publish/in-app-ads",
+ "source_path": "uwp/xbox-apps/devhome-performance.md",
+ "redirect_url": "/previous-versions/windows/uwp/xbox-apps/devhome-performance",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/ad-mediation-report.md",
- "redirect_url": "/windows/uwp/publish/advertising-performance-report",
+ "source_path": "uwp/xbox-apps/devhome-settings.md",
+ "redirect_url": "/previous-versions/windows/uwp/xbox-apps/devhome-settings",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/affiliates-performance-report.md",
- "redirect_url": "/windows/uwp/publish/advertising-performance-report",
+ "source_path": "uwp/xbox-apps/device-portal-xbox.md",
+ "redirect_url": "/previous-versions/windows/uwp/xbox-apps/device-portal-xbox",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/app-install-ads-reports.md",
- "redirect_url": "/windows/uwp/publish/ad-campaign-report",
+ "source_path": "uwp/xbox-apps/devkit-activation.md",
+ "redirect_url": "/previous-versions/windows/uwp/xbox-apps/devkit-activation",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/app-promotion-and-customer-engagement.md",
- "redirect_url": "/windows/uwp/publish/attract-customers-and-promote-your-apps",
+ "source_path": "uwp/xbox-apps/devkit-deactivation.md",
+ "redirect_url": "/previous-versions/windows/uwp/xbox-apps/devkit-deactivation",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/channels-and-conversions-report.md",
- "redirect_url": "/windows/uwp/publish/acquisitions-report",
+ "source_path": "uwp/xbox-apps/disable-scaling.md",
+ "redirect_url": "/previous-versions/windows/uwp/xbox-apps/disable-scaling",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/create-add-on-descriptions.md",
- "redirect_url": "/windows/uwp/publish/create-app-store-listings",
+ "source_path": "uwp/xbox-apps/getting-started.md",
+ "redirect_url": "/previous-versions/windows/uwp/xbox-apps/getting-started",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/create-app-descriptions.md",
- "redirect_url": "/windows/uwp/publish/create-app-store-listings",
+ "source_path": "uwp/xbox-apps/how-to-disable-mouse-mode.md",
+ "redirect_url": "/previous-versions/windows/uwp/xbox-apps/how-to-disable-mouse-mode",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/create-iap-descriptions.md",
- "redirect_url": "/windows/uwp/publish/create-add-on-store-listings",
+ "source_path": "uwp/xbox-apps/index.md",
+ "redirect_url": "/previous-versions/windows/uwp/xbox-apps/index",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/create-platform-specific-descriptions.md",
- "redirect_url": "/windows/uwp/publish/create-platform-specific-store-listings",
+ "source_path": "uwp/xbox-apps/introduction-to-xbox-tools.md",
+ "redirect_url": "/previous-versions/windows/uwp/xbox-apps/introduction-to-xbox-tools",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/enter-iap-properties.md",
- "redirect_url": "/windows/uwp/publish/enter-add-on-properties",
+ "source_path": "uwp/xbox-apps/known-issues.md",
+ "redirect_url": "/previous-versions/windows/uwp/xbox-apps/known-issues",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/how-your-app-appears-in-the-store-for-windows-10-customers.md",
- "redirect_url": "/windows/uwp/publish/using-the-windows-dev-center-dashboard",
+ "source_path": "uwp/xbox-apps/multi-user-applications.md",
+ "redirect_url": "/previous-versions/windows/uwp/xbox-apps/multi-user-applications",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/iap-acquisitions-report.md",
- "redirect_url": "/windows/uwp/publish/add-on-acquisitions-report",
+ "source_path": "uwp/xbox-apps/reference.md",
+ "redirect_url": "/previous-versions/windows/uwp/xbox-apps/reference",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/iap-submissions.md",
- "redirect_url": "/windows/uwp/publish/add-on-submissions",
+ "source_path": "uwp/xbox-apps/samples-xaml-dev.md",
+ "redirect_url": "/previous-versions/windows/uwp/xbox-apps/samples-xaml-dev",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/installs-report.md",
- "redirect_url": "/windows/uwp/publish/acquisitions-report",
+ "source_path": "uwp/xbox-apps/samples-xaml-media.md",
+ "redirect_url": "/previous-versions/windows/uwp/xbox-apps/samples-xaml-media",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/manage-iaps-in-bulk.md",
- "redirect_url": "/windows/uwp/publish/add-on-submissions",
+ "source_path": "uwp/xbox-apps/samples.md",
+ "redirect_url": "/previous-versions/windows/uwp/xbox-apps/samples",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/microsoft-advertising-payment-process.md",
- "redirect_url": "/windows/uwp/publish/payout-summary",
+ "source_path": "uwp/xbox-apps/system-resource-allocation.md",
+ "redirect_url": "/previous-versions/windows/uwp/xbox-apps/system-resource-allocation",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/monetize-with-ads.md",
- "redirect_url": "/windows/uwp/publish/in-app-ads",
+ "source_path": "uwp/xbox-apps/tailoring-for-xbox.md",
+ "redirect_url": "/previous-versions/windows/uwp/xbox-apps/tailoring-for-xbox",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/pubcenter-dev-center-integration.md",
- "redirect_url": "/windows/uwp/publish/in-app-ads",
+ "source_path": "uwp/xbox-apps/turn-off-overscan.md",
+ "redirect_url": "/previous-versions/windows/uwp/xbox-apps/turn-off-overscan",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/pubcenter-devcenter-payout-account-and-tax-profile-consolidation.md",
- "redirect_url": "/windows/uwp/publish/setting-up-your-payout-account-and-tax-forms",
+ "source_path": "uwp/xbox-apps/uwp-deployinfo-api.md",
+ "redirect_url": "/previous-versions/windows/uwp/xbox-apps/uwp-deployinfo-api",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/put-apps-and-iaps-on-sale.md",
- "redirect_url": "/windows/uwp/publish/put-apps-and-add-ons-on-sale",
+ "source_path": "uwp/xbox-apps/uwp-fiddler.md",
+ "redirect_url": "/previous-versions/windows/uwp/xbox-apps/uwp-fiddler",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/set-iap-pricing-and-availability.md",
- "redirect_url": "/windows/uwp/publish/set-add-on-pricing-and-availability",
+ "source_path": "uwp/xbox-apps/uwp-networkcredentials-api.md",
+ "redirect_url": "/previous-versions/windows/uwp/xbox-apps/uwp-networkcredentials-api",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/set-your-iap-product-id.md",
- "redirect_url": "/windows/uwp/publish/set-your-add-on-product-id",
+ "source_path": "uwp/xbox-apps/uwp-remoteinput-api.md",
+ "redirect_url": "/previous-versions/windows/uwp/xbox-apps/uwp-remoteinput-api",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/using-the-windows-dev-center-dashboard.md",
- "redirect_url": "/windows/uwp/publish/",
+ "source_path": "uwp/xbox-apps/uwp-remoteinput-controllers-api.md",
+ "redirect_url": "/previous-versions/windows/uwp/xbox-apps/uwp-remoteinput-controllers-api",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/use-map-services.md",
- "redirect_url": "/windows/uwp/publish/app-management-and-services",
+ "source_path": "uwp/xbox-apps/uwp-sshpins-api.md",
+ "redirect_url": "/previous-versions/windows/uwp/xbox-apps/uwp-sshpins-api",
"redirect_document_id": false
},
{
- "source_path": "uwp/whats-new/windows-10-build-15021-api-diff.md",
- "redirect_url": "/windows/uwp/whats-new/windows-10-build-16299-api-diff",
+ "source_path": "uwp/xbox-apps/ves-on-xbox.md",
+ "redirect_url": "/previous-versions/windows/uwp/xbox-apps/ves-on-xbox",
"redirect_document_id": false
},
{
- "source_path": "uwp/whats-new/windows-10-build-16190-api-diff.md",
- "redirect_url": "/windows/uwp/whats-new/windows-10-build-16299-api-diff",
+ "source_path": "uwp/xbox-apps/wdp-fiddler-api.md",
+ "redirect_url": "/previous-versions/windows/uwp/xbox-apps/wdp-fiddler-api",
"redirect_document_id": false
},
{
- "source_path": "uwp/whats-new/windows-10-build-16225-api-diff.md",
- "redirect_url": "/windows/uwp/whats-new/windows-10-build-16299-api-diff",
+ "source_path": "uwp/xbox-apps/wdp-folder-upload.md",
+ "redirect_url": "/previous-versions/windows/uwp/xbox-apps/wdp-folder-upload",
"redirect_document_id": false
},
{
- "source_path": "uwp/whats-new/windows-10-creators-preview.md",
- "redirect_url": "/windows/uwp/whats-new/windows-10-build-15063",
+ "source_path": "uwp/xbox-apps/wdp-httpMonitor-api.md",
+ "redirect_url": "/previous-versions/windows/uwp/xbox-apps/wdp-httpMonitor-api",
"redirect_document_id": false
},
{
- "source_path": "uwp/whats-new/windows-10-latest-preview-api-diff.md",
- "redirect_url": "/windows/uwp/whats-new/windows-10-build-19041-api-diff",
+ "source_path": "uwp/xbox-apps/wdp-loose-folder-register-api.md",
+ "redirect_url": "/previous-versions/windows/uwp/xbox-apps/wdp-loose-folder-register-api",
"redirect_document_id": false
},
{
- "source_path": "uwp/whats-new/windows-10-version-1710-api-diff.md",
- "redirect_url": "/windows/uwp/whats-new/windows-10-build-16299-api-diff",
+ "source_path": "uwp/xbox-apps/wdp-media-capture-api.md",
+ "redirect_url": "/previous-versions/windows/uwp/xbox-apps/wdp-media-capture-api",
"redirect_document_id": false
},
{
- "source_path": "uwp/whats-new/windows-10-version-1507.md",
- "redirect_url": "/windows/uwp/whats-new/windows-10-build-10240",
+ "source_path": "uwp/xbox-apps/wdp-sandbox-api.md",
+ "redirect_url": "/previous-versions/windows/uwp/xbox-apps/wdp-sandbox-api",
"redirect_document_id": false
},
{
- "source_path": "uwp/whats-new/windows-10-version-1511.md",
- "redirect_url": "/windows/uwp/whats-new/windows-10-build-10586",
+ "source_path": "uwp/xbox-apps/wdp-smb-api.md",
+ "redirect_url": "/previous-versions/windows/uwp/xbox-apps/wdp-smb-api",
"redirect_document_id": false
},
{
- "source_path": "uwp/whats-new/windows-10-sdk-preview.md",
- "redirect_url": "/windows/uwp/whats-new/windows-10-build-14393",
+ "source_path": "uwp/xbox-apps/wdp-user-management.md",
+ "redirect_url": "/previous-versions/windows/uwp/xbox-apps/wdp-user-management",
"redirect_document_id": false
},
{
- "source_path": "uwp/whats-new/windows-10-version-1607.md",
- "redirect_url": "/windows/uwp/whats-new/windows-10-build-14393",
+ "source_path": "uwp/xbox-apps/wdp-xboxinfo-api.md",
+ "redirect_url": "/previous-versions/windows/uwp/xbox-apps/wdp-xboxinfo-api",
"redirect_document_id": false
},
{
- "source_path": "uwp/whats-new/windows-10-version-1607-api-diff.md",
- "redirect_url": "/windows/uwp/whats-new/windows-10-build-14393-api-diff",
+ "source_path": "uwp/xbox-apps/wdp-xboxsettings-api.md",
+ "redirect_url": "/previous-versions/windows/uwp/xbox-apps/wdp-xboxsettings-api",
"redirect_document_id": false
},
{
- "source_path": "uwp/whats-new/windows-10-version-1703.md",
- "redirect_url": "/windows/uwp/whats-new/windows-10-build-15063",
+ "source_path": "uwp/xbox-apps/whats-new.md",
+ "redirect_url": "/previous-versions/windows/uwp/xbox-apps/whats-new",
"redirect_document_id": false
},
{
- "source_path": "uwp/whats-new/windows-10-version-1703-api-diff.md",
- "redirect_url": "/windows/uwp/whats-new/windows-10-build-15063-api-diff",
+ "source_path": "uwp/xbox-apps/xbox-dev-mode-companion.md",
+ "redirect_url": "/previous-versions/windows/uwp/xbox-apps/xbox-dev-mode-companion",
"redirect_document_id": false
},
{
- "source_path": "uwp/whats-new/windows-10-build-16190.md",
- "redirect_url": "/windows/uwp/whats-new/windows-10-build-17134",
+ "source_path": "uwp/whats-new/windows-docs-august-2017.md",
+ "redirect_url": "/windows/uwp/",
"redirect_document_id": false
},
{
- "source_path": "uwp/whats-new/windows-10-version-latest.md",
- "redirect_url": "/windows/uwp/whats-new/windows-10-build-19041",
+ "source_path": "uwp/whats-new/windows-docs-august-2018.md",
+ "redirect_url": "/windows/uwp/",
"redirect_document_id": false
},
{
- "source_path": "uwp/whats-new/windows-10-version-latest-diff.md",
- "redirect_url": "/windows/uwp/whats-new/windows-10-build-19041-api-diff",
+ "source_path": "uwp/whats-new/windows-docs-december-2017.md",
+ "redirect_url": "/windows/uwp/",
"redirect_document_id": false
},
{
- "source_path": "uwp/whats-new/windows-10-build-17110.md",
- "redirect_url": "/windows/uwp/whats-new/windows-10-build-17134",
+ "source_path": "uwp/whats-new/windows-docs-february-2018.md",
+ "redirect_url": "/windows/uwp/",
"redirect_document_id": false
},
{
- "source_path": "uwp/whats-new/windows-10-build-17110-api-diff.md",
- "redirect_url": "/windows/uwp/whats-new/windows-10-build-17134-api-diff",
+ "source_path": "uwp/whats-new/windows-docs-january-2019.md",
+ "redirect_url": "/windows/uwp/",
"redirect_document_id": false
},
{
- "source_path": "uwp/whats-new/windows-docs-latest.md",
- "redirect_url": "/windows/uwp/whats-new/windows-docs-january-2019",
+ "source_path": "uwp/whats-new/windows-docs-july-2017.md",
+ "redirect_url": "/windows/uwp/",
"redirect_document_id": false
},
{
- "source_path": "uwp/whats-new/windows-10-version-1709-api-diff.md",
- "redirect_url": "/windows/uwp/whats-new/windows-10-build-16299-api-diff",
+ "source_path": "uwp/whats-new/windows-docs-july-2018.md",
+ "redirect_url": "/windows/uwp/",
"redirect_document_id": false
},
{
- "source_path": "hub/apps/whats-new/windows-11-build-22000-apis.md",
- "redirect_url": "/windows/apps/whats-new/windows-11-build-22000",
+ "source_path": "uwp/whats-new/windows-docs-may-2018.md",
+ "redirect_url": "/windows/uwp/",
"redirect_document_id": false
},
{
- "source_path": "uwp/accessibility/accessibility-checklist.md",
- "redirect_url": "/windows/uwp/design/accessibility/accessibility-checklist",
- "redirect_document_id": true
+ "source_path": "uwp/whats-new/windows-docs-september-2017.md",
+ "redirect_url": "/windows/uwp/",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/accessibility/accessibility-in-the-store.md",
- "redirect_url": "/windows/uwp/design/accessibility/accessibility-in-the-store",
- "redirect_document_id": true
+ "source_path": "uwp/whats-new/windows-docs-september-2018.md",
+ "redirect_url": "/windows/uwp/",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/accessibility/accessibility-overview.md",
- "redirect_url": "/windows/uwp/design/accessibility/accessibility-overview",
- "redirect_document_id": true
+ "source_path": "uwp/monetize/get-xbox-live-analytics.md",
+ "redirect_url": "/windows/uwp/publish/xbox-analytics-report",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/accessibility/accessibility-testing.md",
- "redirect_url": "/windows/uwp/design/accessibility/accessibility-testing",
- "redirect_document_id": true
+ "source_path": "uwp/monetize/get-xbox-live-achievements-data.md",
+ "redirect_url": "/windows/uwp/publish/xbox-analytics-report",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/accessibility/accessibility.md",
- "redirect_url": "/windows/uwp/design/accessibility/accessibility",
- "redirect_document_id": true
+ "source_path": "uwp/monetize/get-xbox-live-health-data.md",
+ "redirect_url": "/windows/uwp/publish/xbox-analytics-report",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/accessibility/accessible-text-requirements.md",
- "redirect_url": "/windows/uwp/design/accessibility/accessible-text-requirements",
- "redirect_document_id": true
+ "source_path": "uwp/monetize/get-xbox-live-game-hub-data.md",
+ "redirect_url": "/windows/uwp/publish/xbox-analytics-report",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/accessibility/basic-accessibility-information.md",
- "redirect_url": "/windows/uwp/design/accessibility/basic-accessibility-information",
- "redirect_document_id": true
+ "source_path": "uwp/monetize/get-xbox-live-club-data.md",
+ "redirect_url": "/windows/uwp/publish/xbox-analytics-report",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/accessibility/control-patterns-and-interfaces.md",
- "redirect_url": "/windows/uwp/design/accessibility/control-patterns-and-interfaces",
- "redirect_document_id": true
+ "source_path": "uwp/monetize/get-xbox-live-multiplayer-data.md",
+ "redirect_url": "/windows/uwp/publish/xbox-analytics-report",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/accessibility/custom-automation-peers.md",
- "redirect_url": "/windows/uwp/design/accessibility/custom-automation-peers",
- "redirect_document_id": true
+ "source_path": "uwp/monetize/get-xbox-live-concurrent-usage-data.md",
+ "redirect_url": "/windows/uwp/publish/xbox-analytics-report",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/accessibility/designing-inclusive-software.md",
- "redirect_url": "/windows/uwp/design/accessibility/designing-inclusive-software",
- "redirect_document_id": true
+ "source_path": "uwp/debug-test-perf/device-portal-hololens.md",
+ "redirect_url": "/windows/mixed-reality/develop/platform-capabilities-and-apis/using-the-windows-device-portal",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/accessibility/developing-inclusive-windows-apps.md",
- "redirect_url": "/windows/uwp/design/accessibility/developing-inclusive-windows-apps",
- "redirect_document_id": true
+ "source_path": "uwp/debug-test-perf/device-portal-api-hololens.md",
+ "redirect_url": "/windows/mixed-reality/develop/platform-capabilities-and-apis/device-portal-api-reference",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/accessibility/high-contrast-themes.md",
- "redirect_url": "/windows/uwp/design/accessibility/high-contrast-themes",
- "redirect_document_id": true
+ "source_path": "uwp/get-started/get-uwp-app-samples.md",
+ "redirect_url": "/windows/apps/get-started/samples",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/accessibility/keyboard-accessibility.md",
- "redirect_url": "/windows/uwp/design/accessibility/keyboard-accessibility",
- "redirect_document_id": true
+ "source_path": "uwp/home.md",
+ "redirect_url": "/windows/uwp/",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/accessibility/practices-to-avoid.md",
- "redirect_url": "/windows/uwp/design/accessibility/practices-to-avoid",
- "redirect_document_id": true
+ "source_path": "uwp/app-to-app/use-edp-to-protect-enterprise-data-transferred-between-apps.md",
+ "redirect_url": "/windows/uwp/enterprise/wip-dev-guide",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/app-settings/app-settings-and-data.md",
- "redirect_url": "/windows/uwp/design/app-settings/app-settings-and-data",
- "redirect_document_id": true
+ "source_path": "uwp/audio-video-camera/capture-photos-and-video-with-mediacapture.md",
+ "redirect_url": "/windows/uwp/audio-video-camera/",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/design/app-settings/app-settings-and-data.md",
- "redirect_url": "/windows/uwp/design/app-settings/guidelines-for-app-settings",
+ "source_path": "uwp/contacts-and-calendar/integrating-social-feeds-into-contact-cards.md",
+ "redirect_url": "/windows/uwp/contacts-and-calendar",
"redirect_document_id": false
},
{
- "source_path": "uwp/app-settings/guidelines-for-app-settings.md",
- "redirect_url": "/windows/uwp/design/app-settings/guidelines-for-app-settings",
- "redirect_document_id": true
+ "source_path": "uwp/controls-and-patterns/dialogs-popups-menus.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/dialogs-and-flyouts",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/app-settings/store-and-retrieve-app-data.md",
- "redirect_url": "/windows/uwp/design/app-settings/store-and-retrieve-app-data",
- "redirect_document_id": true
+ "source_path": "uwp/controls-and-patterns/nav-pane.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/navigationview",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/app-bars.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/app-bars",
- "redirect_document_id": true
+ "source_path": "uwp/controls-and-patterns/segoe-ui-symbol-font.md",
+ "redirect_url": "/windows/uwp/design/style/segoe-ui-symbol-font",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/auto-suggest-box.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/auto-suggest-box",
- "redirect_document_id": true
+ "source_path": "uwp/controls-and-patterns/spell-checking-and-prediction.md",
+ "redirect_url": "/windows/uwp/controls-and-patterns/text-controls",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/buttons.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/buttons",
- "redirect_document_id": true
+ "source_path": "uwp/controls-and-patterns/styling-controls.md",
+ "redirect_url": "/windows/uwp/controls-and-patterns/xaml-styles",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/calendar-date-picker.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/calendar-date-picker",
- "redirect_document_id": true
+ "source_path": "uwp/design/controls-and-patterns/hub.md",
+ "redirect_url": "/windows/uwp/design/basics/navigation-basics",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/calendar-view.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/calendar-view",
- "redirect_document_id": true
+ "source_path": "uwp/files/protect-your-enterprise-data-with-edp.md",
+ "redirect_url": "/windows/uwp/files/../enterprise/wip-dev-guide",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/checkbox.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/checkbox",
- "redirect_document_id": true
+ "source_path": "uwp/files/use-edp-to-protect-streams-and-buffers.md",
+ "redirect_url": "/windows/uwp/files/../enterprise/wip-dev-guide",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/collection-commanding.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/collection-commanding",
- "redirect_document_id": true
+ "source_path": "uwp/get-started/application-development-for-windows-as-a-service.md",
+ "redirect_url": "/windows/uwp/get-started/../updates-and-versions/application-development-for-windows-as-a-service/",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/color-picker.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/color-picker",
- "redirect_document_id": true
+ "source_path": "uwp/get-started/create-js-apps.md",
+ "redirect_url": "/windows/uwp/get-started/your-first-app#javascript-and-html",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/control-templates.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/control-templates",
- "redirect_document_id": true
+ "source_path": "uwp/get-started/radialcontroller-walkthrough.md",
+ "redirect_url": "/windows/uwp/design/input/radialcontroller-walkthrough/",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/controls-and-events-intro.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/controls-and-events-intro",
- "redirect_document_id": true
+ "source_path": "uwp/get-started/ink-walkthrough.md",
+ "redirect_url": "/windows/uwp/design/input/ink-walkthrough/",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/controls-by-function.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/index",
+ "source_path": "uwp/get-started/xaml-basics-intro.md",
+ "redirect_url": "/windows/uwp/design/basics/xaml-basics-ui",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/controls-by-function.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/index",
- "redirect_document_id": true
+ "source_path": "uwp/get-started/xaml-basics-ui.md",
+ "redirect_url": "/windows/uwp/design/basics/xaml-basics-ui",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/custom-transport-controls.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/custom-transport-controls",
- "redirect_document_id": true
+ "source_path": "uwp/get-started/xaml-basics-style.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/xaml-styles",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/date-and-time.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/date-and-time",
- "redirect_document_id": true
+ "source_path": "uwp/get-started/xaml-basics-adaptive-layout.md",
+ "redirect_url": "/windows/uwp/design/basics/xaml-basics-adaptive-layout",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/date-picker.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/date-picker",
- "redirect_document_id": true
+ "source_path": "uwp/get-started/xaml-basics-data-binding.md",
+ "redirect_url": "/windows/uwp/data-binding/xaml-basics-data-binding",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/dialogs.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/dialogs",
- "redirect_document_id": true
+ "source_path": "uwp/get-started/choose-a-uwp-version.md",
+ "redirect_url": "/windows/uwp/get-started/../updates-and-versions/choose-a-uwp-version/",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/flipview.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/flipview",
- "redirect_document_id": true
+ "source_path": "uwp/get-started/enable-your-device-for-development.md",
+ "redirect_url": "/windows/advanced-settings/developer-mode",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/hub.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/hub",
- "redirect_document_id": true
+ "source_path": "uwp/get-started/sign-up.md",
+ "redirect_url": "/windows/apps/publish/partner-center/open-a-developer-account",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/hyperlinks.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/hyperlinks",
- "redirect_document_id": true
+ "source_path": "uwp/get-started/adding-webvr-to-a-babylonjs-game.md",
+ "redirect_url": "/windows/apps/get-started/",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/images-imagebrushes.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/images-imagebrushes",
- "redirect_document_id": true
+ "source_path": "uwp/get-started/create-a-hello-world-app-js-uwp.md",
+ "redirect_url": "/windows/apps/get-started/",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/index.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/index",
+ "source_path": "uwp/get-started/get-started-tutorial-fullstack-web-app.md",
+ "redirect_url": "/windows/uwp/get-started/",
"redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/inking-controls.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/inking-controls",
- "redirect_document_id": true
+ "source_path": "uwp/get-started/get-started-tutorial-game-js2d.md",
+ "redirect_url": "/windows/uwp/get-started/",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/inverted-lists.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/inverted-lists",
- "redirect_document_id": true
- },
- {
- "source_path": "uwp/controls-and-patterns/item-templates-gridview.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/item-templates-gridview",
- "redirect_document_id": true
+ "source_path": "uwp/get-started/get-started-tutorial-game-js3d.md",
+ "redirect_url": "/windows/uwp/get-started/",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/item-templates-listview.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/item-templates-listview",
+ "source_path": "uwp/get-started/get-started-tutorial-game-mg2d.md",
+ "redirect_url": "/windows/uwp/get-started/",
"redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/labels.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/labels",
- "redirect_document_id": true
+ "source_path": "uwp/graphics/composition-animation.md",
+ "redirect_url": "/windows/uwp/composition/composition-animation",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/lists.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/lists",
- "redirect_document_id": true
+ "source_path": "uwp/graphics/composition-brushes.md",
+ "redirect_url": "/windows/uwp/composition/composition-brushes",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/listview-and-gridview.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/listview-and-gridview",
- "redirect_document_id": true
+ "source_path": "uwp/graphics/composition-effects.md",
+ "redirect_url": "/windows/uwp/composition/composition-effects",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/listview-item-templates.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/item-templates-listview",
+ "source_path": "uwp/graphics/composition-native-interop.md",
+ "redirect_url": "/windows/uwp/composition/composition-native-interop",
"redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/master-details.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/master-details",
- "redirect_document_id": true
+ "source_path": "uwp/graphics/composition-visual-tree.md",
+ "redirect_url": "/windows/uwp/composition/composition-visual-tree",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/media-playback.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/media-playback",
- "redirect_document_id": true
+ "source_path": "uwp/graphics/using-the-visual-layer-with-xaml.md",
+ "redirect_url": "/windows/uwp/composition/using-the-visual-layer-with-xaml",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/menus.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/menus",
- "redirect_document_id": true
+ "source_path": "uwp/graphics/visual-layer.md",
+ "redirect_url": "/windows/uwp/composition/visual-layer",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/navigationview.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/navigationview",
- "redirect_document_id": true
+ "source_path": "uwp/input-and-devices/guidelines-for-user-interaction.md",
+ "redirect_url": "/windows/uwp/input-and-devices/touch-interactions",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/nested-ui.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/nested-ui",
- "redirect_document_id": true
+ "source_path": "uwp/layout/peer-to-peer-navigation-between-two-pages.md",
+ "redirect_url": "/windows/uwp/layout/navigate-between-two-pages",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/password-box.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/password-box",
- "redirect_document_id": true
+ "source_path": "uwp/maps-and-location/controls-map.md",
+ "redirect_url": "/windows/uwp/maps-and-location/display-maps#display-map-in-a-control",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/person-picture.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/person-picture",
- "redirect_document_id": true
+ "source_path": "uwp/maps-and-location/display-maps#map-control",
+ "redirect_url": "/windows/uwp/maps-and-location/display-maps#display-map-in-a-control",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/pin-to-taskbar.md",
- "redirect_url": "/windows/uwp/design/shell/pin-to-taskbar",
- "redirect_document_id": true
+ "source_path": "uwp/monetize/adcontrol-error-handling.md",
+ "redirect_url": "/windows/uwp/monetize/error-handling-in-xamlc-walkthrough",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/progress-controls.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/progress-controls",
- "redirect_document_id": true
+ "source_path": "uwp/monetize/adcontrol-events-in-c.md",
+ "redirect_url": "/windows/uwp/monetize/adcontrol-in-xaml-and--net",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/pull-to-refresh.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/pull-to-refresh",
- "redirect_document_id": true
+ "source_path": "uwp/monetize/adcontrol-events-in-javascript.md",
+ "redirect_url": "/windows/uwp/monetize/adcontrol-in-html-5-and-javascript",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/radio-button.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/radio-button",
- "redirect_document_id": true
+ "source_path": "uwp/monetize/adcontrol-in-windows-phone-silverlight.md",
+ "redirect_url": "/previous-versions/windows/apps/mt842563(v=win.10)",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/rating.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/rating",
- "redirect_document_id": true
+ "source_path": "uwp/monetize/add-ads-to-apps-with-microsoft-advertising.md",
+ "redirect_url": "/windows/uwp/monetize/display-ads-in-your-app",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/resourcedictionary-and-xaml-resource-references.md",
- "redirect_url": "/windows/apps/design/style/xaml-resource-dictionary",
+ "source_path": "uwp/monetize/add-and-use-the-ad-mediator-control.md",
+ "redirect_url": "/previous-versions/windows/apps/dn792120(v=win.10",
"redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/rich-edit-box.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/rich-edit-box",
- "redirect_document_id": true
+ "source_path": "uwp/monetize/additional-help.md",
+ "redirect_url": "/windows/uwp/monetize/display-ads-in-your-app#additional-help",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/rich-text-block.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/rich-text-block",
- "redirect_document_id": true
+ "source_path": "uwp/monetize/claim-a-targeted-offer.md",
+ "redirect_url": "/windows/uwp/monetize/manage-targeted-offers-using-windows-store-services",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/scroll-controls.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/scroll-controls",
- "redirect_document_id": true
+ "source_path": "uwp/monetize/code-samples.md",
+ "redirect_url": "/windows/uwp/monetize/developer-walkthroughs",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/search.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/index",
+ "source_path": "uwp/monetize/create-an-adcontrol-in-javascript.md",
+ "redirect_url": "/windows/uwp/monetize/adcontrol-in-html-5-and-javascript",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/search.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/index",
+ "source_path": "uwp/monetize/developer-information.md",
+ "redirect_url": "/windows/uwp/monetize/display-ads-in-your-app",
"redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/semantic-zoom.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/semantic-zoom",
- "redirect_document_id": true
+ "source_path": "uwp/monetize/display-ads-using-the-microsoft-advertising-libraries.md",
+ "redirect_url": "/windows/uwp/monetize/display-ads-in-your-app",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/slider.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/slider",
- "redirect_document_id": true
+ "source_path": "uwp/monetize/get-app-failures.md",
+ "redirect_url": "/windows/uwp/monetize/get-error-reporting-data",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/split-view.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/split-view",
- "redirect_document_id": true
+ "source_path": "uwp/monetize/get-started-with-microsoft-advertising-libraries.md",
+ "redirect_url": "/windows/uwp/monetize/display-ads-in-your-app",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/swipe.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/swipe",
- "redirect_document_id": true
+ "source_path": "uwp/monetize/html-properties-example.md",
+ "redirect_url": "/windows/uwp/monetize/adcontrol-in-html-5-and-javascript",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/tabs-pivot.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/tab-view",
- "redirect_document_id": true
+ "source_path": "uwp/monetize/important-notice-eula.md",
+ "redirect_url": "/windows/uwp/monetize/display-ads-in-your-app",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/text-block.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/text-block",
- "redirect_document_id": true
+ "source_path": "uwp/monetize/install-the-microsoft-universal-ad-client-sdk.md",
+ "redirect_url": "/windows/uwp/monetize/microsoft-store-services-sdk",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/text-box.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/text-box",
- "redirect_document_id": true
+ "source_path": "uwp/monetize/migrate-from-admediatorcontrol-to-adcontrol.md",
+ "redirect_url": "/windows/uwp/monetize/display-ads-in-your-app",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/text-controls.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/text-controls",
- "redirect_document_id": true
+ "source_path": "uwp/monetize/monetize-your-app-with-the-microsoft-store-engagement-and-monetization-sdk.md",
+ "redirect_url": "/windows/uwp/monetize/microsoft-store-services-sdk",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/tiles-and-notifications-adaptive-interactive-toasts.md",
- "redirect_url": "/windows/uwp/design/shell/tiles-and-notifications/adaptive-interactive-toasts",
- "redirect_document_id": true
+ "source_path": "uwp/monetize/select-and-manage-your-ad-networks.md",
+ "redirect_url": "/previous-versions/windows/apps/dn792120(v=win.10)",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/tiles-and-notifications-adaptive-tiles-schema.md",
- "redirect_url": "/windows/uwp/design/shell/tiles-and-notifications/adaptive-tiles-schema",
- "redirect_document_id": true
+ "source_path": "uwp/monetize/submit-an-app-with-ads-to-the-windows-store.md",
+ "redirect_url": "/windows/uwp/monetize/display-ads-in-your-app",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/tiles-and-notifications-app-assets.md",
- "redirect_url": "/windows/uwp/app-resources/images-tailored-for-scale-theme-contrast",
- "redirect_document_id": true
+ "source_path": "uwp/monetize/submit-your-app-and-configure-ad-mediation.md",
+ "redirect_url": "/previous-versions/windows/apps/dn792120(v=win.10)",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/tiles-and-notifications-badges.md",
- "redirect_url": "/windows/uwp/design/shell/tiles-and-notifications/badges",
- "redirect_document_id": true
+ "source_path": "uwp/monetize/supported-markets-for-microsoft-advertising.md",
+ "redirect_url": "/windows/uwp/monetize/display-ads-in-your-app",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/tiles-and-notifications-choosing-a-notification-delivery-method.md",
- "redirect_url": "/windows/uwp/design/shell/tiles-and-notifications/choosing-a-notification-delivery-method",
- "redirect_document_id": true
+ "source_path": "uwp/monetize/test-mode-values.md",
+ "redirect_url": "/windows/uwp/monetize/set-up-ad-units-in-your-app",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/tiles-and-notifications-create-adaptive-tiles.md",
- "redirect_url": "/windows/uwp/design/shell/tiles-and-notifications/create-adaptive-tiles",
- "redirect_document_id": true
+ "source_path": "uwp/monetize/test-your-ad-mediation-implementation.md",
+ "redirect_url": "/previous-versions/windows/apps/dn792120(v=win.10)",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/tiles-and-notifications-creating-tiles.md",
- "redirect_url": "/windows/uwp/design/shell/tiles-and-notifications/creating-tiles",
- "redirect_document_id": true
+ "source_path": "uwp/monetize/troubleshoot-ad-mediation.md",
+ "redirect_url": "/previous-versions/windows/apps/dn792120(v=win.10)",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/tiles-and-notifications-notifications-visualizer.md",
- "redirect_url": "/windows/uwp/design/shell/tiles-and-notifications/notifications-visualizer",
- "redirect_document_id": true
+ "source_path": "uwp/monetize/troubleshooting-guides.md",
+ "redirect_url": "/windows/uwp/monetize/known-issues-for-the-advertising-libraries",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/tiles-and-notifications-periodic-notification-overview.md",
- "redirect_url": "/windows/uwp/design/shell/tiles-and-notifications/periodic-notification-overview",
- "redirect_document_id": true
+ "source_path": "uwp/monetize/use-ad-mediation-to-maximize-revenue.md",
+ "redirect_url": "/previous-versions/windows/apps/dn792120(v=win.10)",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/tiles-and-notifications-primary-tile-apis.md",
- "redirect_url": "/windows/uwp/design/shell/tiles-and-notifications/primary-tile-apis",
- "redirect_document_id": true
+ "source_path": "uwp/monetize/what-is-the-difference-admediatorcontrol-or-adcontrol.md",
+ "redirect_url": "/windows/uwp/monetize/display-ads-in-your-app",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/tiles-and-notifications-raw-notification-overview.md",
- "redirect_url": "/windows/uwp/design/shell/tiles-and-notifications/raw-notification-overview",
- "redirect_document_id": true
+ "source_path": "uwp/monetize/workflows-for-creating-apps-with-ads.md",
+ "redirect_url": "/windows/uwp/monetize/display-ads-in-your-app",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/tiles-and-notifications-secondary-tiles-desktop-pinning.md",
- "redirect_url": "/windows/uwp/design/shell/tiles-and-notifications/secondary-tiles-desktop-pinning",
- "redirect_document_id": true
+ "source_path": "uwp/monetize/xaml-properties-example.md",
+ "redirect_url": "/windows/uwp/monetize/adcontrol-in-xaml-and--net",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/tiles-and-notifications-secondary-tiles-guidance.md",
- "redirect_url": "/windows/uwp/design/shell/tiles-and-notifications/secondary-tiles-guidance",
+ "source_path": "uwp/networking/tagging_network_connections_with_edp_identity.md",
+ "redirect_url": "/windows/uwp/networking/../enterprise/wip-dev-guide",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/porting/desktop-to-uwp-deploy-and-debug.md",
+ "redirect_url": "/windows/uwp/porting/desktop-to-uwp-debug",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/porting/desktop-to-uwp-signing.md",
+ "redirect_url": "/windows/uwp/porting/desktop-to-uwp-debug#test-your-app",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/porting/update-your-visual-studio-2015-rc-project-to-rtm.md",
+ "redirect_url": "/visualstudio/porting/port-migrate-and-upgrade-visual-studio-projects",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/publish/about-affiliate-ads.md",
+ "redirect_url": "/windows/uwp/publish/in-app-ads",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/publish/ad-mediation-report.md",
+ "redirect_url": "/windows/uwp/publish/advertising-performance-report",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/publish/affiliates-performance-report.md",
+ "redirect_url": "/windows/uwp/publish/advertising-performance-report",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/publish/app-install-ads-reports.md",
+ "redirect_url": "/windows/uwp/publish/ad-campaign-report",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/publish/app-promotion-and-customer-engagement.md",
+ "redirect_url": "/windows/uwp/publish/attract-customers-and-promote-your-apps",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/publish/channels-and-conversions-report.md",
+ "redirect_url": "/windows/uwp/publish/acquisitions-report",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/publish/create-add-on-descriptions.md",
+ "redirect_url": "/windows/uwp/publish/create-app-store-listings",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/publish/create-app-descriptions.md",
+ "redirect_url": "/windows/uwp/publish/create-app-store-listings",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/publish/create-iap-descriptions.md",
+ "redirect_url": "/windows/uwp/publish/create-add-on-store-listings",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/publish/create-platform-specific-descriptions.md",
+ "redirect_url": "/windows/uwp/publish/create-platform-specific-store-listings",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/publish/enter-iap-properties.md",
+ "redirect_url": "/windows/uwp/publish/enter-add-on-properties",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/publish/how-your-app-appears-in-the-store-for-windows-10-customers.md",
+ "redirect_url": "/windows/uwp/publish/using-the-windows-dev-center-dashboard",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/publish/iap-acquisitions-report.md",
+ "redirect_url": "/windows/uwp/publish/add-on-acquisitions-report",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/publish/iap-submissions.md",
+ "redirect_url": "/windows/uwp/publish/add-on-submissions",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/publish/installs-report.md",
+ "redirect_url": "/windows/uwp/publish/acquisitions-report",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/publish/manage-iaps-in-bulk.md",
+ "redirect_url": "/windows/uwp/publish/add-on-submissions",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/publish/microsoft-advertising-payment-process.md",
+ "redirect_url": "/windows/uwp/publish/payout-summary",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/publish/monetize-with-ads.md",
+ "redirect_url": "/windows/uwp/publish/in-app-ads",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/publish/pubcenter-dev-center-integration.md",
+ "redirect_url": "/windows/uwp/publish/in-app-ads",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/publish/pubcenter-devcenter-payout-account-and-tax-profile-consolidation.md",
+ "redirect_url": "/windows/uwp/publish/setting-up-your-payout-account-and-tax-forms",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/publish/put-apps-and-iaps-on-sale.md",
+ "redirect_url": "/windows/uwp/publish/put-apps-and-add-ons-on-sale",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/publish/set-iap-pricing-and-availability.md",
+ "redirect_url": "/windows/uwp/publish/set-add-on-pricing-and-availability",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/publish/set-your-iap-product-id.md",
+ "redirect_url": "/windows/uwp/publish/set-your-add-on-product-id",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/publish/using-the-windows-dev-center-dashboard.md",
+ "redirect_url": "/windows/uwp/publish/",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/publish/use-map-services.md",
+ "redirect_url": "/windows/uwp/publish/app-management-and-services",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/whats-new/windows-10-build-15021-api-diff.md",
+ "redirect_url": "/windows/uwp/whats-new/windows-10-build-16299-api-diff",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/whats-new/windows-10-build-16190-api-diff.md",
+ "redirect_url": "/windows/uwp/whats-new/windows-10-build-16299-api-diff",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/whats-new/windows-10-build-16225-api-diff.md",
+ "redirect_url": "/windows/uwp/whats-new/windows-10-build-16299-api-diff",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/whats-new/windows-10-creators-preview.md",
+ "redirect_url": "/windows/uwp/whats-new/windows-10-build-15063",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/whats-new/windows-10-latest-preview-api-diff.md",
+ "redirect_url": "/windows/uwp/whats-new/windows-10-build-19041-api-diff",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/whats-new/windows-10-version-1710-api-diff.md",
+ "redirect_url": "/windows/uwp/whats-new/windows-10-build-16299-api-diff",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/whats-new/windows-10-version-1507.md",
+ "redirect_url": "/windows/uwp/whats-new/windows-10-build-10240",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/whats-new/windows-10-version-1511.md",
+ "redirect_url": "/windows/uwp/whats-new/windows-10-build-10586",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/whats-new/windows-10-sdk-preview.md",
+ "redirect_url": "/windows/uwp/whats-new/windows-10-build-14393",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/whats-new/windows-10-version-1607.md",
+ "redirect_url": "/windows/uwp/whats-new/windows-10-build-14393",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/whats-new/windows-10-version-1607-api-diff.md",
+ "redirect_url": "/windows/uwp/whats-new/windows-10-build-14393-api-diff",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/whats-new/windows-10-version-1703.md",
+ "redirect_url": "/windows/uwp/whats-new/windows-10-build-15063",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/whats-new/windows-10-version-1703-api-diff.md",
+ "redirect_url": "/windows/uwp/whats-new/windows-10-build-15063-api-diff",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/whats-new/windows-10-build-16190.md",
+ "redirect_url": "/windows/uwp/whats-new/windows-10-build-17134",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/whats-new/windows-10-version-latest.md",
+ "redirect_url": "/windows/uwp/whats-new/windows-10-build-19041",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/whats-new/windows-10-version-latest-diff.md",
+ "redirect_url": "/windows/uwp/whats-new/windows-10-build-19041-api-diff",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/whats-new/windows-10-build-17110.md",
+ "redirect_url": "/windows/uwp/whats-new/windows-10-build-17134",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/whats-new/windows-10-build-17110-api-diff.md",
+ "redirect_url": "/windows/uwp/whats-new/windows-10-build-17134-api-diff",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/whats-new/windows-docs-latest.md",
+ "redirect_url": "/windows/uwp/whats-new/windows-docs-january-2019",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/whats-new/windows-10-version-1709-api-diff.md",
+ "redirect_url": "/windows/uwp/whats-new/windows-10-build-16299-api-diff",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "hub/apps/whats-new/windows-11-build-22000-apis.md",
+ "redirect_url": "/windows/apps/whats-new/whats-new-for-developers",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/accessibility/accessibility-checklist.md",
+ "redirect_url": "/windows/uwp/design/accessibility/accessibility-checklist",
"redirect_document_id": true
},
{
- "source_path": "uwp/controls-and-patterns/tiles-and-notifications-secondary-tiles-pinning.md",
- "redirect_url": "/windows/uwp/design/shell/tiles-and-notifications/secondary-tiles-pinning",
- "redirect_document_id": true
+ "source_path": "uwp/accessibility/accessibility-in-the-store.md",
+ "redirect_url": "/windows/uwp/design/accessibility/accessibility-in-the-store",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/accessibility/accessibility-overview.md",
+ "redirect_url": "/windows/uwp/design/accessibility/accessibility-overview",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/accessibility/accessibility-testing.md",
+ "redirect_url": "/windows/uwp/design/accessibility/accessibility-testing",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/accessibility/accessibility.md",
+ "redirect_url": "/windows/uwp/design/accessibility/accessibility",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/accessibility/accessible-text-requirements.md",
+ "redirect_url": "/windows/uwp/design/accessibility/accessible-text-requirements",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/accessibility/basic-accessibility-information.md",
+ "redirect_url": "/windows/uwp/design/accessibility/basic-accessibility-information",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/accessibility/control-patterns-and-interfaces.md",
+ "redirect_url": "/windows/uwp/design/accessibility/control-patterns-and-interfaces",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/accessibility/custom-automation-peers.md",
+ "redirect_url": "/windows/uwp/design/accessibility/custom-automation-peers",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/accessibility/designing-inclusive-software.md",
+ "redirect_url": "/windows/uwp/design/accessibility/designing-inclusive-software",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/accessibility/developing-inclusive-windows-apps.md",
+ "redirect_url": "/windows/uwp/design/accessibility/developing-inclusive-windows-apps",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/accessibility/high-contrast-themes.md",
+ "redirect_url": "/windows/uwp/design/accessibility/high-contrast-themes",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/accessibility/keyboard-accessibility.md",
+ "redirect_url": "/windows/uwp/design/accessibility/keyboard-accessibility",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/accessibility/practices-to-avoid.md",
+ "redirect_url": "/windows/uwp/design/accessibility/practices-to-avoid",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/app-settings/app-settings-and-data.md",
+ "redirect_url": "/windows/uwp/design/app-settings/app-settings-and-data",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/design/app-settings/app-settings-and-data.md",
+ "redirect_url": "/windows/uwp/design/app-settings/guidelines-for-app-settings",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/app-settings/guidelines-for-app-settings.md",
+ "redirect_url": "/windows/uwp/design/app-settings/guidelines-for-app-settings",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/app-settings/store-and-retrieve-app-data.md",
+ "redirect_url": "/windows/uwp/design/app-settings/store-and-retrieve-app-data",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/app-bars.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/app-bars",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/auto-suggest-box.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/auto-suggest-box",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/buttons.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/buttons",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/calendar-date-picker.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/calendar-date-picker",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/calendar-view.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/calendar-view",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/checkbox.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/checkbox",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/collection-commanding.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/collection-commanding",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/color-picker.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/color-picker",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/control-templates.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/control-templates",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/controls-and-events-intro.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/controls-and-events-intro",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/controls-by-function.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/index",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/design/controls-and-patterns/controls-by-function.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/index",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/custom-transport-controls.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/custom-transport-controls",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/date-and-time.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/date-and-time",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/date-picker.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/date-picker",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/dialogs.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/dialogs",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/flipview.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/flipview",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/hub.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/hub",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/hyperlinks.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/hyperlinks",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/images-imagebrushes.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/images-imagebrushes",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/index.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/index",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/inking-controls.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/inking-controls",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/inverted-lists.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/inverted-lists",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/item-templates-gridview.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/item-templates-gridview",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/item-templates-listview.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/item-templates-listview",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/labels.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/labels",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/lists.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/lists",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/listview-and-gridview.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/listview-and-gridview",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/listview-item-templates.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/item-templates-listview",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/master-details.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/master-details",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/media-playback.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/media-playback",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/menus.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/menus",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/navigationview.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/navigationview",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/nested-ui.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/nested-ui",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/password-box.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/password-box",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/person-picture.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/person-picture",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/pin-to-taskbar.md",
+ "redirect_url": "/windows/uwp/design/shell/pin-to-taskbar",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/progress-controls.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/progress-controls",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/pull-to-refresh.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/pull-to-refresh",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/radio-button.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/radio-button",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/rating.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/rating",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/resourcedictionary-and-xaml-resource-references.md",
+ "redirect_url": "/windows/apps/design/style/xaml-resource-dictionary",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/rich-edit-box.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/rich-edit-box",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/rich-text-block.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/rich-text-block",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/scroll-controls.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/scroll-controls",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/search.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/index",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/design/controls-and-patterns/search.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/index",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/semantic-zoom.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/semantic-zoom",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/slider.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/slider",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/split-view.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/split-view",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/swipe.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/swipe",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/tabs-pivot.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/tab-view",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/text-block.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/text-block",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/text-box.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/text-box",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/text-controls.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/text-controls",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/tiles-and-notifications-adaptive-interactive-toasts.md",
+ "redirect_url": "/windows/uwp/design/shell/tiles-and-notifications/adaptive-interactive-toasts",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/tiles-and-notifications-adaptive-tiles-schema.md",
+ "redirect_url": "/windows/uwp/design/shell/tiles-and-notifications/adaptive-tiles-schema",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/tiles-and-notifications-app-assets.md",
+ "redirect_url": "/windows/uwp/app-resources/images-tailored-for-scale-theme-contrast",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/tiles-and-notifications-badges.md",
+ "redirect_url": "/windows/uwp/design/shell/tiles-and-notifications/badges",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/tiles-and-notifications-choosing-a-notification-delivery-method.md",
+ "redirect_url": "/windows/uwp/design/shell/tiles-and-notifications/choosing-a-notification-delivery-method",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/tiles-and-notifications-create-adaptive-tiles.md",
+ "redirect_url": "/windows/uwp/design/shell/tiles-and-notifications/create-adaptive-tiles",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/tiles-and-notifications-creating-tiles.md",
+ "redirect_url": "/windows/uwp/design/shell/tiles-and-notifications/creating-tiles",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/tiles-and-notifications-notifications-visualizer.md",
+ "redirect_url": "/windows/uwp/design/shell/tiles-and-notifications/notifications-visualizer",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/tiles-and-notifications-periodic-notification-overview.md",
+ "redirect_url": "/windows/uwp/design/shell/tiles-and-notifications/periodic-notification-overview",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/tiles-and-notifications-primary-tile-apis.md",
+ "redirect_url": "/windows/uwp/design/shell/tiles-and-notifications/primary-tile-apis",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/tiles-and-notifications-raw-notification-overview.md",
+ "redirect_url": "/windows/uwp/design/shell/tiles-and-notifications/raw-notification-overview",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/tiles-and-notifications-secondary-tiles-desktop-pinning.md",
+ "redirect_url": "/windows/uwp/design/shell/tiles-and-notifications/secondary-tiles-desktop-pinning",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/tiles-and-notifications-secondary-tiles-guidance.md",
+ "redirect_url": "/windows/uwp/design/shell/tiles-and-notifications/secondary-tiles-guidance",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/tiles-and-notifications-secondary-tiles-pinning.md",
+ "redirect_url": "/windows/uwp/design/shell/tiles-and-notifications/secondary-tiles-pinning",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/tiles-and-notifications-secondary-tiles.md",
+ "redirect_url": "/windows/uwp/design/shell/tiles-and-notifications/secondary-tiles",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/tiles-and-notifications-send-local-toast.md",
+ "redirect_url": "/windows/uwp/design/shell/tiles-and-notifications/send-local-toast",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/tiles-and-notifications-sending-a-local-tile-notification.md",
+ "redirect_url": "/windows/uwp/design/shell/tiles-and-notifications/sending-a-local-tile-notification",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/tiles-and-notifications-special-tile-templates-catalog.md",
+ "redirect_url": "/windows/uwp/design/shell/tiles-and-notifications/special-tile-templates-catalog",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/tiles-and-notifications-the-code-generated-by-the-push-notification-wizard.md",
+ "redirect_url": "/windows/uwp/design/shell/tiles-and-notifications/the-code-generated-by-the-push-notification-wizard",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/tiles-and-notifications-toast-schema.md",
+ "redirect_url": "/windows/uwp/design/shell/tiles-and-notifications/toast-schema",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/tiles-and-notifications-toast-xml-schema.md",
+ "redirect_url": "/windows/uwp/design/shell/tiles-and-notifications/toast-xml-schema",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/tiles-and-notifications-windows-push-notification-services--wns--overview.md",
+ "redirect_url": "/windows/uwp/design/shell/tiles-and-notifications/windows-push-notification-services--wns--overview",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/tiles-badges-notifications.md",
+ "redirect_url": "/windows/uwp/design/shell/tiles-and-notifications/index",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/time-picker.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/time-picker",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/toggles.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/toggles",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/tooltips.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/tooltips",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/tree-view.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/tree-view",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/web-view.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/web-view",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/xaml-styles.md",
+ "redirect_url": "/windows/apps/develop/platform/xaml/xaml-styles",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/xaml-theme-resources.md",
+ "redirect_url": "/windows/apps/develop/platform/xaml/xaml-theme-resources",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/tiles-and-notifications/channel-types.md",
+ "redirect_url": "/windows/uwp/design/shell/tiles-and-notifications/channel-types",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/tiles-and-notifications/chaseable-tile-notifications.md",
+ "redirect_url": "/windows/uwp/design/shell/tiles-and-notifications/chaseable-tile-notifications",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/tiles-and-notifications/notification-listener.md",
+ "redirect_url": "/windows/uwp/design/shell/tiles-and-notifications/notification-listener",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/controls-and-patterns/tiles-and-notifications/tile-schema.md",
+ "redirect_url": "/windows/uwp/design/shell/tiles-and-notifications/tile-schema",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/design-downloads/index.md",
+ "redirect_url": "/windows/uwp/design/downloads/index",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/in-app-help/external-help.md",
+ "redirect_url": "/windows/uwp/design/in-app-help/external-help",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/in-app-help/guidelines-for-app-help.md",
+ "redirect_url": "/windows/uwp/design/in-app-help/guidelines-for-app-help",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/in-app-help/in-app-help.md",
+ "redirect_url": "/windows/uwp/design/in-app-help/in-app-help",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/in-app-help/instructional-ui.md",
+ "redirect_url": "/windows/uwp/design/in-app-help/instructional-ui",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/in-app-help/voice-and-tone.md",
+ "redirect_url": "/windows/uwp/design/style/writing-style",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/design/style/voice-and-tone.md",
+ "redirect_url": "/windows/uwp/design/style/writing-style",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/input-and-devices/access-keys.md",
+ "redirect_url": "/windows/uwp/design/input/access-keys",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/input-and-devices/convert-ink-to-text.md",
+ "redirect_url": "/windows/uwp/design/input/convert-ink-to-text",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/input-and-devices/custom-keyboard-interactions.md",
+ "redirect_url": "/windows/uwp/design/input/custom-keyboard-interactions",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/input-and-devices/custom-text-input.md",
+ "redirect_url": "/windows/uwp/design/input/custom-text-input",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/input-and-devices/define-custom-recognition-constraints.md",
+ "redirect_url": "/windows/uwp/design/input/define-custom-recognition-constraints",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/input-and-devices/designing-for-tv.md",
+ "redirect_url": "/windows/uwp/design/devices/designing-for-tv",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/input-and-devices/device-primer.md",
+ "redirect_url": "/windows/uwp/design/devices/index",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/input-and-devices/enable-continuous-dictation.md",
+ "redirect_url": "/windows/uwp/design/input/enable-continuous-dictation",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/input-and-devices/gamepad-and-remote-interactions.md",
+ "redirect_url": "/windows/uwp/design/input/gamepad-and-remote-interactions",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/input-and-devices/guidelines-for-cross-slide.md",
+ "redirect_url": "/windows/uwp/design/input/guidelines-for-cross-slide",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/input-and-devices/guidelines-for-optical-zoom.md",
+ "redirect_url": "/windows/uwp/design/input/guidelines-for-optical-zoom",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/input-and-devices/guidelines-for-panning.md",
+ "redirect_url": "/windows/uwp/design/input/guidelines-for-panning",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/input-and-devices/guidelines-for-rotation.md",
+ "redirect_url": "/windows/uwp/design/input/guidelines-for-rotation",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/input-and-devices/guidelines-for-targeting.md",
+ "redirect_url": "/windows/uwp/design/input/guidelines-for-targeting",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/input-and-devices/guidelines-for-textselection.md",
+ "redirect_url": "/windows/uwp/design/input/guidelines-for-textselection",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/input-and-devices/guidelines-for-visualfeedback.md",
+ "redirect_url": "/windows/uwp/design/input/guidelines-for-visualfeedback",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/input-and-devices/handle-pointer-input.md",
+ "redirect_url": "/windows/uwp/design/input/handle-pointer-input",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/input-and-devices/identify-input-devices.md",
+ "redirect_url": "/windows/uwp/design/input/identify-input-devices",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/input-and-devices/index.md",
+ "redirect_url": "/windows/uwp/design/input/index",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/input-and-devices/ink-toolbar.md",
+ "redirect_url": "/windows/uwp/design/input/ink-toolbar",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/input-and-devices/input-primer.md",
+ "redirect_url": "/windows/uwp/design/input/input-primer",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/input-and-devices/keyboard-accelerators.md",
+ "redirect_url": "/windows/uwp/design/input/keyboard-accelerators",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/input-and-devices/keyboard-events.md",
+ "redirect_url": "/windows/uwp/design/input/keyboard-events",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/input-and-devices/keyboard-interactions.md",
+ "redirect_url": "/windows/uwp/design/input/keyboard-interactions",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/input-and-devices/manage-issues-with-audio-input.md",
+ "redirect_url": "/windows/uwp/design/input/manage-issues-with-audio-input",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/input-and-devices/managing-focus-navigation.md",
+ "redirect_url": "/windows/uwp/design/input/managing-focus-navigation",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/input-and-devices/mouse-interactions.md",
+ "redirect_url": "/windows/uwp/design/input/mouse-interactions",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/input-and-devices/multiple-input-design-guidelines.md",
+ "redirect_url": "/windows/uwp/design/input/multiple-input-design-guidelines",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/input-and-devices/pen-and-stylus-interactions.md",
+ "redirect_url": "/windows/uwp/design/input/pen-and-stylus-interactions",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/input-and-devices/respond-to-the-presence-of-the-touch-keyboard.md",
+ "redirect_url": "/windows/uwp/design/input/respond-to-the-presence-of-the-touch-keyboard",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/input-and-devices/save-and-load-ink.md",
+ "redirect_url": "/windows/uwp/design/input/save-and-load-ink",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/input-and-devices/set-speech-recognition-timeouts.md",
+ "redirect_url": "/windows/uwp/design/input/set-speech-recognition-timeouts",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/input-and-devices/specify-the-speech-recognizer-language.md",
+ "redirect_url": "/windows/uwp/design/input/specify-the-speech-recognizer-language",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/input-and-devices/speech-interactions.md",
+ "redirect_url": "/windows/uwp/design/input/speech-interactions",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/input-and-devices/speech-recognition.md",
+ "redirect_url": "/windows/uwp/design/input/speech-recognition",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/input-and-devices/touch-interactions.md",
+ "redirect_url": "/windows/uwp/design/input/touch-interactions",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/input-and-devices/touchpad-interactions.md",
+ "redirect_url": "/windows/uwp/design/input/touchpad-interactions",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/input-and-devices/use-input-scope-to-change-the-touch-keyboard.md",
+ "redirect_url": "/windows/uwp/design/input/use-input-scope-to-change-the-touch-keyboard",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/input-and-devices/windows-wheel-interactions.md",
+ "redirect_url": "/windows/uwp/design/input/windows-wheel-interactions",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/layout/alignment-margin-padding.md",
+ "redirect_url": "/windows/uwp/design/layout/alignment-margin-padding",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/layout/boxpanel-example-custom-panel.md",
+ "redirect_url": "/windows/uwp/design/layout/boxpanel-example-custom-panel",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/layout/commanding-basics.md",
+ "redirect_url": "/windows/uwp/design/basics/commanding-basics",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/layout/content-as-objects.md",
+ "redirect_url": "/windows/uwp/design",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/layout/content-basics.md",
+ "redirect_url": "/windows/uwp/design/basics/content-basics",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/layout/custom-panels-overview.md",
+ "redirect_url": "/windows/uwp/design/layout/custom-panels-overview",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/layout/design-and-ui-intro.md",
+ "redirect_url": "/windows/uwp/design/basics/design-and-ui-intro",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/layout/grid-tutorial.md",
+ "redirect_url": "/windows/uwp/design/layout/grid-tutorial",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/layout/index.md",
+ "redirect_url": "/windows/uwp/design/layout/index",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/layout/layout-panels.md",
+ "redirect_url": "/windows/uwp/design/layout/layout-panels",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/layout/layouts-with-xaml.md",
+ "redirect_url": "/windows/uwp/design/layout/layouts-with-xaml",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/layout/navigate-between-two-pages.md",
+ "redirect_url": "/windows/uwp/design/basics/navigate-between-two-pages",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/layout/navigation-basics.md",
+ "redirect_url": "/windows/uwp/design/basics/navigation-basics",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/layout/navigation-history-and-backwards-navigation.md",
+ "redirect_url": "/windows/uwp/design/basics/navigation-history-and-backwards-navigation",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/layout/screen-sizes-and-breakpoints-for-responsive-design.md",
+ "redirect_url": "/windows/uwp/design/layout/screen-sizes-and-breakpoints-for-responsive-design",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/layout/show-multiple-views.md",
+ "redirect_url": "/windows/uwp/ui-input/show-multiple-views",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/style/acrylic.md",
+ "redirect_url": "/windows/uwp/design/style/acrylic",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/style/balancing-style-and-consistency.md",
+ "redirect_url": "/windows/uwp/design/style/balancing-style-and-consistency",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/style/color.md",
+ "redirect_url": "/windows/uwp/design/style/color",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/style/connected-animation.md",
+ "redirect_url": "/windows/uwp/design/motion/connected-animation",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/style/content-transition-animations.md",
+ "redirect_url": "/windows/uwp/design/motion/content-transition-animations",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/style/icons.md",
+ "redirect_url": "/windows/uwp/design/style/icons",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/style/index.md",
+ "redirect_url": "/windows/uwp/design/style/index",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/style/motion-dragdrop.md",
+ "redirect_url": "/previous-versions/windows/uwp/ui-input/motion-dragdrop",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/style/motion-edgebased.md",
+ "redirect_url": "/previous-versions/windows/uwp/ui-input/motion-edgebased",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/style/motion-fade.md",
+ "redirect_url": "/previous-versions/windows/uwp/ui-input/motion-fade",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/style/motion-list.md",
+ "redirect_url": "/previous-versions/windows/uwp/ui-input/motion-list",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/style/motion-pointer.md",
+ "redirect_url": "/previous-versions/windows/uwp/ui-input/motion-pointer",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/style/motion-popup-animations.md",
+ "redirect_url": "/previous-versions/windows/uwp/ui-input/motion-popup-animations",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/style/motion-reposition.md",
+ "redirect_url": "/previous-versions/windows/uwp/ui-input/motion-reposition",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/style/motion.md",
+ "redirect_url": "/windows/uwp/design/motion/index",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/style/parallax.md",
+ "redirect_url": "/windows/uwp/design/motion/parallax",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/style/reveal.md",
+ "redirect_url": "/windows/uwp/design/style/index",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/design/style/reveal.md",
+ "redirect_url": "/windows/uwp/design/style/index",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/style/segoe-ui-symbol-font.md",
+ "redirect_url": "/windows/uwp/design/style/segoe-ui-symbol-font",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/style/sound.md",
+ "redirect_url": "/windows/uwp/design/style/sound",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/style/title-bar.md",
+ "redirect_url": "/windows/uwp/design/shell/title-bar",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/design/style/fonts.md",
+ "redirect_url": "/windows/uwp/design/style/typography",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/usability/index.md",
+ "redirect_url": "/windows/uwp/design/usability/index",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/globalizing/adjust-layout-and-fonts--and-support-rtl.md",
+ "redirect_url": "/windows/uwp/design/globalizing/adjust-layout-and-fonts--and-support-rtl",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/globalizing/glob-numeralsystem-values.md",
+ "redirect_url": "/windows/uwp/design/globalizing/glob-numeralsystem-values",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/globalizing/globalizing-portal.md",
+ "redirect_url": "/windows/uwp/design/globalizing/globalizing-portal",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/globalizing/guidelines-and-checklist-for-globalizing-your-app.md",
+ "redirect_url": "/windows/uwp/design/globalizing/guidelines-and-checklist-for-globalizing-your-app",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/globalizing/loc-international-fonts.md",
+ "redirect_url": "/windows/uwp/design/globalizing/loc-international-fonts",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/globalizing/manage-language-and-region.md",
+ "redirect_url": "/windows/uwp/design/globalizing/manage-language-and-region",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/globalizing/prepare-your-app-for-localization.md",
+ "redirect_url": "/windows/uwp/design/globalizing/prepare-your-app-for-localization",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/globalizing/use-global-ready-formats.md",
+ "redirect_url": "/windows/uwp/design/globalizing/use-global-ready-formats",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/globalizing/use-patterns-to-format-dates-and-times.md",
+ "redirect_url": "/windows/uwp/design/globalizing/use-patterns-to-format-dates-and-times",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/data-access/entity-framework-7-with-sqlite-for-csharp-apps.md",
+ "redirect_url": "/ef/core/get-started/uwp/getting-started",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/app-resources/tile-toast-language-scale-contrast.md",
+ "redirect_url": "/windows/uwp/design/shell/tiles-and-notifications/tile-toast-language-scale-contrast",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/graphics/using-brushes.md",
+ "redirect_url": "/windows/uwp/design/style/brushes",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/graphics/animations-overview.md",
+ "redirect_url": "/windows/uwp/design/motion/xaml-animation",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/graphics/storyboarded-animations.md",
+ "redirect_url": "/windows/uwp/design/motion/storyboarded-animations",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/graphics/key-frame-and-easing-function-animations.md",
+ "redirect_url": "/windows/uwp/design/motion/key-frame-and-easing-function-animations",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/graphics/drawing-shapes.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/shapes",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/graphics/transforms-overview.md",
+ "redirect_url": "/windows/uwp/design/layout/transforms",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/graphics/3-d-perspective-effects.md",
+ "redirect_url": "/windows/apps/develop/platform/xaml/3-d-perspective-effects",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/graphics/index.md",
+ "redirect_url": "/windows/uwp/design/style",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/debug-test-perf/device-portal-xbox.md",
+ "redirect_url": "/windows/uwp/xbox-apps/device-portal-xbox",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/xbox-live/social-platform/people-system/xbox-360-friends-backward-compatibility.md",
+ "redirect_url": "/gaming/xbox-live/social-platform/people-system/people-system_nav",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/get-started-with-creators/sign-in-to-xbox-live-in-unity.md",
+ "redirect_url": "/gaming/xbox-live/get-started/setup-ide/creators/unity-win10/signin/unity-signin_nav",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/xbox-integrated-multiplayer-overview.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/xbox-integrated-multiplayer/xbox-integrated-multiplayer",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/storage-platform/connected-storage/connected-storage-clearing.md",
+ "redirect_url": "/windows/uwp/xbox-live/storage-platform/connected-storage/connected-storage-xb-storage",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/design/input/custom-keyboard-interactions.md",
+ "redirect_url": "/windows/uwp/design/input/focus-navigation",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/design/input/managing-focus-navigation.md",
+ "redirect_url": "/windows/uwp/design/input/focus-navigation-programmatic",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/xbox-live/social-platform/people-system/privacy-and-people-i-know.md",
+ "redirect_url": "/windows/uwp/xbox-live/social-platform/people-system/xbox-live-people-system",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/get-started/whats-a-uwp.md",
+ "redirect_url": "/windows/uwp/get-started/universal-application-platform-guide",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/porting/hwa-to-uwp-root.md",
+ "redirect_url": "/microsoft-edge/progressive-web-apps",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/porting/hwa-access-features.md",
+ "redirect_url": "/microsoft-edge/progressive-web-apps",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/porting/hwa-chrome-conversion.md",
+ "redirect_url": "/microsoft-edge/progressive-web-apps",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/porting/hwa-create-mac.md",
+ "redirect_url": "/microsoft-edge/progressive-web-apps",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/publish/resolve-package-upload-errors.md",
+ "redirect_url": "/windows/uwp/publish/upload-app-packages",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/publish/manage-add-ons-in-bulk.md",
+ "redirect_url": "/windows/uwp/publish/add-on-submissions",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/publish/associate-azure-ad-with-dev-center.md",
+ "redirect_url": "/windows/uwp/publish/associate-azure-ad-with-partner-center",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/publish/managing-your-profile.md",
+ "redirect_url": "/partner-center/partner-center-account-setup",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/publish/define-pricing-and-market-selection.md",
+ "redirect_url": "/windows/uwp/publish/define-market-selection",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/publish/promote-your-app-report.md",
+ "redirect_url": "/windows/uwp/publish/ad-campaign-report",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/publish/app-declarations.md",
+ "redirect_url": "/windows/uwp/publish/product-declarations",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/porting/hwa-create-windows.md",
+ "redirect_url": "/microsoft-edge/progressive-web-apps",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/design/controls-and-patterns/tabs-pivot.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/pivot",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/design/controls-and-patterns/dialogs.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/dialogs-and-flyouts/index",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/monetize/download-the-cab-file-for-an-oem-hardware-error.md",
+ "redirect_url": "/windows-hardware/drivers/dashboard/download-the-cab-file-for-an-oem-hardware-error",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/monetize/download-the-cab-file-for-a-windows-10-driver-error.md",
+ "redirect_url": "/windows-hardware/drivers/dashboard/download-the-cab-file-for-a-windows-10-driver-error",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/monetize/download-the-cab-file-for-a-windows-7-or-windows-8.x-driver-error.md",
+ "redirect_url": "/windows-hardware/drivers/dashboard/download-the-cab-file-for-a-windows-7-or-windows-8.x-driver-error",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/monetize/get-details-for-an-oem-hardware-error.md",
+ "redirect_url": "/windows-hardware/drivers/dashboard/get-details-for-an-oem-hardware-error",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/monetize/get-details-for-a-windows-10-driver-error.md",
+ "redirect_url": "/windows-hardware/drivers/dashboard/get-details-for-a-windows-10-driver-error",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/monetize/get-details-for-a-windows-7-or-windows-8.x-driver-error.md",
+ "redirect_url": "/windows-hardware/drivers/dashboard/get-details-for-a-windows-7-or-windows-8.x-driver-error",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/monetize/get-error-reporting-data-for-windows-10-drivers.md",
+ "redirect_url": "/windows-hardware/drivers/dashboard/get-error-reporting-data-for-windows-10-drivers",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/monetize/get-error-reporting-data-for-windows-7-and-windows-8.x-drivers.md",
+ "redirect_url": "/windows-hardware/drivers/dashboard/get-error-reporting-data-for-windows-7-and-windows-8.x-drivers",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/monetize/get-oem-hardware-error-reporting-data.md",
+ "redirect_url": "/windows-hardware/drivers/dashboard/get-oem-hardware-error-reporting-data",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/machine-learning/index.md",
+ "redirect_url": "/windows/ai",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/machine-learning/get-started.md",
+ "redirect_url": "/windows/ai",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/machine-learning/overview.md",
+ "redirect_url": "/windows/ai",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/machine-learning/conversion-samples.md",
+ "redirect_url": "/windows/ai/convert-model-winmltools",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/machine-learning/integrate-model.md",
+ "redirect_url": "/windows/ai/integrate-model",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/machine-learning/samples.md",
+ "redirect_url": "https://github.com/Microsoft/Windows-Machine-Learning",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/machine-learning/train-ai-model.md",
+ "redirect_url": "/windows/ai/get-onnx-model",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/composition/lighting.md",
+ "redirect_url": "/windows/uwp/composition/xaml-lighting",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/devices-sensors/nfc.md",
+ "redirect_url": "/windows/uwp/devices-sensors/",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/devices-sensors/generate-3mf.md",
+ "redirect_url": "/windows/uwp/devices-sensors/3d-generate-3mf",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/devices-sensors/pos-advanced-connectivity.md",
+ "redirect_url": "/windows/uwp/devices-sensors/point-of-service",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/devices-sensors/pos-barcodescanner-get-started.md",
+ "redirect_url": "/windows/uwp/devices-sensors/pos-barcodescanner-configure",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/design/shell/tiles-and-notifications/app-assets.md",
+ "redirect_url": "/windows/apps/design/style/iconography/overview",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "hub/apps/design/style/app-icons-and-logos.md",
+ "redirect_url": "/windows/apps/design/style/iconography/overview",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/xbox-live/configure-xbl/dev-center/data-sharing-udc.md",
+ "redirect_url": "/windows/uwp/xbox-live/configure-xbl/dev-center/access-policies-udc",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "uwp/packaging/appinstaller-root.md",
+ "redirect_url": "/windows/msix/app-installer/app-installer-root",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/packaging/create-appinstallerfile-vs.md",
+ "redirect_url": "/windows/msix/app-installer/create-appinstallerfile-vs",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/packaging/installing-UWP-apps-web.md",
+ "redirect_url": "/windows/msix/app-installer/installing-windows10-apps-web",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/packaging/install-related-set.md",
+ "redirect_url": "/windows/msix/app-installer/install-related-set",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/packaging/troubleshoot-appinstaller-issues.md",
+ "redirect_url": "/windows/msix/app-installer/troubleshoot-appinstaller-issues",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/packaging/web-install-azure.md",
+ "redirect_url": "/windows/msix/app-installer/web-install-azure",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/packaging/web-install-IIS.md",
+ "redirect_url": "/windows/msix/app-installer/web-install-iis",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/packaging/web-install-aws.md",
+ "redirect_url": "/windows/msix/app-installer/web-install-aws",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/publish/dev-center-insider-program.md",
+ "redirect_url": "/windows/uwp/publish",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/advanced-xbox-live-sandboxes.md",
+ "redirect_url": "/gaming/xbox-live/advanced-xbox-live-sandboxes",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/developer-program-overview.md",
+ "redirect_url": "/gaming/gdk/_content/gc/live/get-started/live-getstarted-nav",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/flatc-async-patterns.md",
+ "redirect_url": "/gaming/xbox-live/flatc-async-patterns",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/index.md",
+ "redirect_url": "/gaming/xbox-live/index",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/introduction-to-xbox-live-apis.md",
+ "redirect_url": "/gaming/xbox-live/introduction-to-xbox-live-apis",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/samples.md",
+ "redirect_url": "/gaming/xbox-live/samples",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/testing-on-console.md",
+ "redirect_url": "/gaming/xbox-live/testing-on-console",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/what-is-xbox-live.md",
+ "redirect_url": "/gaming/xbox-live/get-started/what-is-xbox-live",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-resources.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-resources",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-sandboxes.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-sandboxes",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-service-configuration.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-service-configuration",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-test-accounts.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-test-accounts",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live.md",
+ "redirect_url": "/gaming/xbox-live/",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xboxlive-policies.md",
+ "redirect_url": "/gaming/xbox-live/xboxlive-policies",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xboxservices-config.md",
+ "redirect_url": "/gaming/xbox-live/get-started/setup-ide/managed-partners/vs-win10/xboxservices-config",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xsapi-flat-c.md",
+ "redirect_url": "/gaming/xbox-live/xsapi-flat-c",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/achievements-2017/achievement-rewards.md",
+ "redirect_url": "/gaming/xbox-live/achievements-2017/achievement-rewards",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/achievements-2017/achievements.md",
+ "redirect_url": "/gaming/xbox-live/achievements-2017/achievements_nav",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/achievements-2017/simplified-achievements.md",
+ "redirect_url": "/gaming/xbox-live/achievements-2017/simplified-achievements",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/configure-xbl/windows-dev-center.md",
+ "redirect_url": "/gaming/xbox-live/get-started/setup-partner-center/setup-partner-center_nav",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/configure-xbl/dev-center/access-policies-udc.md",
+ "redirect_url": "/gaming/xbox-live/configure-xbl/dev-center/access-policies-udc",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/configure-xbl/dev-center/achievements-in-udc.md",
+ "redirect_url": "/gaming/xbox-live/configure-xbl/dev-center/achievements-in-udc",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/configure-xbl/dev-center/featured-stats-and-leaderboards.md",
+ "redirect_url": "/gaming/xbox-live/configure-xbl/dev-center/featured-stats-and-leaderboards",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/configure-xbl/dev-center/game-dvr.md",
+ "redirect_url": "/gaming/xbox-live/configure-xbl/dev-center/game-dvr",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/configure-xbl/dev-center/localized-strings.md",
+ "redirect_url": "/gaming/xbox-live/configure-xbl/dev-center/localized-strings",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/configure-xbl/dev-center/privileges.md",
+ "redirect_url": "/gaming/xbox-live/configure-xbl/dev-center/privileges",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/configure-xbl/dev-center/rich-presence-configuration.md",
+ "redirect_url": "/gaming/xbox-live/configure-xbl/dev-center/rich-presence-configuration",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/configure-xbl/dev-center/single-sign-on.md",
+ "redirect_url": "/gaming/xbox-live/configure-xbl/dev-center/single-sign-on",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/configure-xbl/dev-center/summary.md",
+ "redirect_url": "/gaming/xbox-live/configure-xbl/dev-center/summary",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/configure-xbl/dev-center/title-storage.md",
+ "redirect_url": "/gaming/xbox-live/configure-xbl/dev-center/title-storage",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/configure-xbl/dev-center/web-services.md",
+ "redirect_url": "/gaming/xbox-live/configure-xbl/dev-center/web-services",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/configure-xbl/dev-center/xbox-live-setup.md",
+ "redirect_url": "/gaming/xbox-live/configure-xbl/dev-center/xbox-live-setup",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/contextual-search/configuring-contextual-search.md",
+ "redirect_url": "/gaming/xbox-live/contextual-search/configuring-contextual-search",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/contextual-search/introduction-to-contextual-search.md",
+ "redirect_url": "/gaming/xbox-live/contextual-search/introduction-to-contextual-search",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/data-platform/data-platform.md",
+ "redirect_url": "/gaming/xbox-live/data-platform/player-data_nav",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/data-platform/designing-xbox-live-experiences.md",
+ "redirect_url": "/gaming/xbox-live/data-platform/designing-xbox-live-experiences",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/get-started-with-creators/add-controller-support-to-xbox-live-prefabs.md",
+ "redirect_url": "/gaming/xbox-live/get-started/setup-ide/creators/unity-win10/add-controller-support-to-xbox-live-prefabs",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/get-started-with-creators/add-multi-user-support.md",
+ "redirect_url": "/gaming/xbox-live/get-started/setup-ide/creators/unity-win10/add-multi-user-support",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/get-started-with-creators/add-stats-and-leaderboards-in-unity.md",
+ "redirect_url": "/gaming/xbox-live/get-started-with-creators/add-stats-and-leaderboards-in-unity",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/get-started-with-creators/authorize-xbox-live-accounts.md",
+ "redirect_url": "/gaming/xbox-live/get-started/setup-partner-center/legacy/authorize-xbox-live-accounts",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/get-started-with-creators/check-user-privileges-in-unity.md",
+ "redirect_url": "/gaming/xbox-live/get-started/setup-ide/creators/unity-win10/check-user-privileges-in-unity",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/get-started-with-creators/configure-xbox-live-in-unity.md",
+ "redirect_url": "/gaming/xbox-live/get-started/setup-ide/creators/unity-win10/configure-xbox-live-in-unity",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/get-started-with-creators/create-and-test-a-new-creators-title.md",
+ "redirect_url": "/gaming/xbox-live/get-started/setup-partner-center/legacy/create-and-test-a-new-creators-title",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/get-started-with-creators/creators-step-by-step-guide.md",
+ "redirect_url": "/gaming/xbox-live/get-started-with-creators/creators-step-by-step-guide",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/get-started-with-creators/develop-creators-title-with-unity.md",
+ "redirect_url": "/gaming/xbox-live/get-started/setup-ide/creators/unity-win10/cr-unity-win10_nav",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/get-started-with-creators/develop-creators-title-with-visual-studio.md",
+ "redirect_url": "/gaming/xbox-live/get-started/setup-ide/creators/vs-win10/develop-creators-title-with-visual-studio",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/get-started-with-creators/get-started-with-xbox-live-creators.md",
+ "redirect_url": "/gaming/xbox-live/get-started/setup-partner-center/setup-partner-center-creators",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/get-started-with-creators/playerauthentication-prefab-sign-in.md",
+ "redirect_url": "/gaming/xbox-live/get-started/setup-ide/creators/unity-win10/signin/playerauthentication-prefab-sign-in",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/get-started-with-creators/setup-leaderboard-example-scene.md",
+ "redirect_url": "/gaming/xbox-live/get-started-with-creators/setup-leaderboard-example-scene",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/get-started-with-creators/sign-in-manager.md",
+ "redirect_url": "/gaming/xbox-live/using-xbox-live/auth/authentication_nav",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/get-started-with-creators/test-visual-studio-build.md",
+ "redirect_url": "/gaming/xbox-live/get-started/setup-ide/creators/unity-win10/test-visual-studio-build",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/get-started-with-creators/unity-leaderboard-from-scratch-pre1804.md",
+ "redirect_url": "/gaming/xbox-live/get-started-with-creators/unity-leaderboard-from-scratch-pre1804",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/get-started-with-creators/unity-leaderboard-from-scratch.md",
+ "redirect_url": "/gaming/xbox-live/get-started-with-creators/unity-leaderboard-from-scratch",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/get-started-with-creators/unity-prefabs-and-sign-in.md",
+ "redirect_url": "/gaming/xbox-live/get-started/setup-ide/creators/unity-win10/signin/unity-prefabs-and-sign-in",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/get-started-with-creators/xbox-live-sandboxes-creators.md",
+ "redirect_url": "/gaming/xbox-live/get-started-with-creators/xbox-live-sandboxes-creators",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/get-started-with-creators/xbox-live-service-configuration-creators.md",
+ "redirect_url": "/gaming/xbox-live/get-started-with-creators/xbox-live-service-configuration-creators",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/get-started-with-partner/add-xbox-live-apis-binary-to-a-uwp-project.md",
+ "redirect_url": "/gaming/xbox-live/get-started/setup-ide/managed-partners/vs-win10/add-xbox-live-apis-binary-to-a-uwp-project",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/get-started-with-partner/add-xbox-live-apis-source-to-a-uwp-project.md",
+ "redirect_url": "/gaming/xbox-live/get-started/setup-ide/managed-partners/vs-win10/add-xbox-live-apis-source-to-a-uwp-project",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/get-started-with-partner/add-xbox-live-to-an-xdk-project.md",
+ "redirect_url": "/gaming/xbox-live/get-started/setup-ide/managed-partners/vs-xbox/add-xbox-live-to-an-xdk-project",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/get-started-with-partner/advanced-xbox-live-sandboxes.md",
+ "redirect_url": "/gaming/xbox-live/advanced-xbox-live-sandboxes",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/get-started-with-partner/compile-the-xdk-xbox-live-api-source.md",
+ "redirect_url": "/gaming/xbox-live/get-started/setup-ide/managed-partners/vs-xbox/compile-the-xdk-xbox-live-api-source",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/get-started-with-partner/configure-your-development-console.md",
+ "redirect_url": "/gaming/xbox-live/get-started/setup-ide/managed-partners/vs-xbox/configure-your-development-console",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/get-started-with-partner/create-a-new-title.md",
+ "redirect_url": "/gaming/xbox-live/get-started/setup-partner-center/legacy/create-a-new-title",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/get-started-with-partner/get-started-with-cross-play-games.md",
+ "redirect_url": "/gaming/xbox-live/get-started-with-partner/get-started-with-cross-play-games",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/get-started-with-partner/get-started-with-visual-studio-and-uwp.md",
+ "redirect_url": "/gaming/xbox-live/get-started/setup-ide/managed-partners/vs-win10/get-started-with-visual-studio-and-uwp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/get-started-with-partner/get-started-with-xbox-live-partner.md",
+ "redirect_url": "/gaming/xbox-live/get-started/setup-partner-center/legacy/get-started-with-xbox-live-partner",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/get-started-with-partner/partner-add-xbox-live-to-unity-uwp.md",
+ "redirect_url": "/gaming/xbox-live/get-started/setup-ide/managed-partners/unity-win10/partner-add-xbox-live-to-unity-uwp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/get-started-with-partner/partner-unity-uwp-il2cpp.md",
+ "redirect_url": "/gaming/xbox-live/get-started/setup-ide/managed-partners/unity-win10/partner-unity-uwp-il2cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/get-started-with-partner/partner-unity-xdk-il2cpp.md",
+ "redirect_url": "/gaming/xbox-live/get-started/setup-ide/managed-partners/unity-xbox/partner-unity-xdk-il2cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/get-started-with-partner/partners-step-by-step-guide.md",
+ "redirect_url": "/gaming/xbox-live/get-started/setup-partner-center/legacy/get-started-with-xbox-live-partner",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/get-started-with-partner/use-xbox-live-nuget-with-xdk.md",
+ "redirect_url": "/gaming/xbox-live/get-started/setup-ide/managed-partners/vs-xbox/use-xbox-live-nuget-with-xdk",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/get-started-with-partner/using-xbox-live-apis-built-into-the-xdk.md",
+ "redirect_url": "/gaming/xbox-live/get-started/setup-ide/managed-partners/vs-xbox/using-xbox-live-apis-built-into-the-xdk",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/get-started-with-partner/where-to-get-xdk.md",
+ "redirect_url": "/gaming/xbox-live/get-started/setup-ide/managed-partners/vs-xbox/where-to-get-xdk",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/get-started-with-partner/xdk-developers.md",
+ "redirect_url": "/gaming/xbox-live/get-started/setup-ide/managed-partners/vs-xbox/mp-vs-xbox_nav",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/leaderboards-and-stats-2017/leaderboards.md",
+ "redirect_url": "/gaming/xbox-live/leaderboards-and-stats-2017/leaderboards",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/leaderboards-and-stats-2017/player-stats-configure-2017.md",
+ "redirect_url": "/gaming/xbox-live/leaderboards-and-stats-2017/player-stats-configure-2017",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/leaderboards-and-stats-2017/player-stats-updating.md",
+ "redirect_url": "/gaming/xbox-live/leaderboards-and-stats-2017/player-stats-updating",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/leaderboards-and-stats-2017/player-stats.md",
+ "redirect_url": "/gaming/xbox-live/data-platform/player-data_nav",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/leaderboards-and-stats-2017/stats2017.md",
+ "redirect_url": "/gaming/xbox-live/leaderboards-and-stats-2017/stats2017",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/multiplayer-concepts.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-concepts",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/multiplayer-intro.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-intro",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/multiplayer-manager.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-platform",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/multiplayer-roles.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-roles",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/multiplayer-scenarios.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-scenarios",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/session-browse.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/session-browse",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/xbox-integrated-multiplayer.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/xbox-integrated-multiplayer/xbox-integrated-multiplayer",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/arena/arena-apis-metadata.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/arena/arena-apis-metadata",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/arena/arena-notifications.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/arena/arena-notifications",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/arena/arena-title-integration.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/arena/arena-title-integration",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/arena/arena-user-scenarios.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/arena/arena-user-scenarios",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/arena/arena-ux-join-tournament.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/arena/arena-ux-join-tournament",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/arena/arena-ux-match-engagement.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/arena/arena-ux-match-engagement",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/arena/discovering-xbox-tournaments.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/arena/discovering-xbox-tournaments",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/arena/operations-portal.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/arena/operations-portal",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/arena/xbox-arena.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/arena/xbox-arena",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/chat/game-chat-2-migration.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/chat/game-chat-2-migration",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/chat/game-chat-2-overview.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/chat/game-chat-2-overview",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/chat/real-time-audio-manipulation.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/chat/real-time-audio-manipulation",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/chat/using-game-chat-2-winrt.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/chat/using-game-chat-2-winrt",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/chat/using-game-chat-2.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/chat/using-game-chat-2",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/multiplayer-appendix/common-issues-when-adapting-multiplayer.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-appendix/common-issues-when-adapting-multiplayer",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/multiplayer-appendix/flows-for-multiplayer-game-invites.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/invite/multiplayer-invite-flows",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/multiplayer-appendix/game-session-and-game-party-visibility-and-joinability.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-appendix/game-session-and-game-party-visibility-and-joinability",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/multiplayer-appendix/introduction-to-the-multiplayer-system.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-appendix/introduction-to-the-multiplayer-system",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/multiplayer-appendix/migrating-an-arbiter.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-appendix/migrating-an-arbiter",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/multiplayer-appendix/mpsd-session-details.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-session/mpsd-details",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/multiplayer-appendix/multiplayer-2015-faq.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-appendix/multiplayer-2015-faq",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/multiplayer-appendix/multiplayer-appendix.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-appendix/multiplayer-appendix",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/multiplayer-appendix/multiplayer-how-tos.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-session/mpsd-how-tos",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/multiplayer-appendix/multiplayer-session-directory.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-appendix/xbox-one-multiplayer-session-directory",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/multiplayer-appendix/multiplayer-session-status-codes.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-session/mpsd-status-codes",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/multiplayer-appendix/smartmatch-matchmaking.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-manager/mpm-flowcharts/mpm-play-with-smartmatch-matchmaking",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/multiplayer-appendix/using-smartmatch-matchmaking.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/matchmaking/matchmaking",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/multiplayer-appendix/xbox-one-multiplayer-session-directory.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-appendix/xbox-one-multiplayer-session-directory",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/multiplayer-manager/handle-protocol-activation.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-manager/handle-protocol-activation",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/multiplayer-manager/mpm-flowcharts.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-manager/mpm-flowcharts",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/multiplayer-manager/multiplayer-manager-api-overview.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-manager/multiplayer-manager-api-overview",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/multiplayer-manager/play-multiplayer-with-friends.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-manager/play-multiplayer-with-friends",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/multiplayer-manager/play-multiplayer-with-matchmaking.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-manager/play-multiplayer-with-matchmaking",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/multiplayer-manager/send-game-invites.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-manager/send-game-invites",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/multiplayer-manager/mpm-flowcharts/mpm-fill-open-slots.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-manager/mpm-flowcharts/mpm-fill-open-slots",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/multiplayer-manager/mpm-flowcharts/mpm-host-migration.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-manager/mpm-flowcharts/mpm-host-migration",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/multiplayer-manager/mpm-flowcharts/mpm-on-protocol-activation.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-manager/mpm-flowcharts/mpm-on-protocol-activation",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/multiplayer-manager/mpm-flowcharts/mpm-play-with-friends.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-manager/mpm-flowcharts/mpm-play-with-friends",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/multiplayer-manager/mpm-flowcharts/mpm-play-with-smartmatch-matchmaking.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-manager/mpm-flowcharts/mpm-play-with-smartmatch-matchmaking",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/multiplayer-manager/mpm-flowcharts/mpm-send-invites.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-manager/mpm-flowcharts/mpm-send-invites",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/multiplayer-manager/mpm-flowcharts/mpm-shut-down.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-manager/mpm-flowcharts/mpm-shut-down",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/multiplayer-manager/mpm-flowcharts/mpm-use-matchmaking-and-qos.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-manager/mpm-flowcharts/mpm-use-matchmaking-and-qos",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/service-configuration/configure-the-multiplayer-service.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/service-configuration/configure-the-multiplayer-service",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/service-configuration/configure-your-appxmanifest-for-multiplayer.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/xbox-integrated-multiplayer/xim-manifest",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/service-configuration/large-sessions.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/service-configuration/large-sessions",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/service-configuration/session-template-constants.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/service-configuration/session-template-constants",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/service-configuration/session-templates.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/service-configuration/session-templates",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/xbox-integrated-multiplayer/using-xim-cs.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/xbox-integrated-multiplayer/using-xim-cs",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/xbox-integrated-multiplayer/using-xim.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/xbox-integrated-multiplayer/using-xim",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/xbox-integrated-multiplayer/xim-manifest.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/xbox-integrated-multiplayer/xim-manifest",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/xbox-integrated-multiplayer/xim-release-notes.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/xbox-integrated-multiplayer/xim-release-notes",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/xbox-integrated-multiplayer/xim-reservations.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/xbox-integrated-multiplayer/xim-reservations",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/multiplayer/xbox-integrated-multiplayer/xim-unity-uwp-il2cpp.md",
+ "redirect_url": "/gaming/xbox-live/multiplayer/xbox-integrated-multiplayer/xim-unity-uwp-il2cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/real-time-activity-service/programming-the-real-time-activity-service.md",
+ "redirect_url": "/gaming/xbox-live/real-time-activity-service/programming-the-real-time-activity-service",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/real-time-activity-service/real-time-activity-service.md",
+ "redirect_url": "/gaming/xbox-live/real-time-activity-service/real-time-activity-service_nav",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/real-time-activity-service/register-for-stat-notifications.md",
+ "redirect_url": "/gaming/xbox-live/real-time-activity-service/register-for-stat-notifications",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/real-time-activity-service/rta-best-practices.md",
+ "redirect_url": "/gaming/xbox-live/real-time-activity-service/rta-best-practices",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/social-platform/intro-to-social-manager.md",
+ "redirect_url": "/gaming/xbox-live/social-platform/intro-to-social-manager",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/social-platform/social-manager-memory-and-performance-overview.md",
+ "redirect_url": "/gaming/xbox-live/social-platform/social-manager-memory-and-performance-overview",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/social-platform/social-platform.md",
+ "redirect_url": "/gaming/xbox-live/social-platform/social-platform_nav",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/social-platform/people-system/displaying-people-from-the-people-system.md",
+ "redirect_url": "/gaming/xbox-live/social-platform/people-system/displaying-people-from-the-people-system",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/social-platform/people-system/programming-social-services.md",
+ "redirect_url": "/gaming/xbox-live/social-platform/people-system/programming-social-services",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/social-platform/people-system/reputation.md",
+ "redirect_url": "/gaming/xbox-live/social-platform/people-system/reputation_nav",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/social-platform/people-system/sending-player-feedback-from-your-title.md",
+ "redirect_url": "/gaming/xbox-live/social-platform/people-system/sending-player-feedback-from-your-title",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/social-platform/people-system/xbox-live-people-system.md",
+ "redirect_url": "/gaming/xbox-live/social-platform/people-system/xbox-live-people-system",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/social-platform/rich-presence-strings/programming-rich-presence.md",
+ "redirect_url": "/gaming/xbox-live/social-platform/rich-presence-strings/programming-rich-presence",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/social-platform/rich-presence-strings/rich-presence-strings-appendix.md",
+ "redirect_url": "/gaming/xbox-live/social-platform/rich-presence-strings/rich-presence-strings-appendix",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/social-platform/rich-presence-strings/rich-presence-strings-best-practices.md",
+ "redirect_url": "/gaming/xbox-live/social-platform/rich-presence-strings/rich-presence-strings-best-practices",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/social-platform/rich-presence-strings/rich-presence-strings-configuration.md",
+ "redirect_url": "/gaming/xbox-live/social-platform/rich-presence-strings/rich-presence-strings-configuration",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/social-platform/rich-presence-strings/rich-presence-strings-overview.md",
+ "redirect_url": "/gaming/xbox-live/social-platform/rich-presence-strings/rich-presence-strings-overview",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/social-platform/rich-presence-strings/rich-presence-strings-policies-and-limitations.md",
+ "redirect_url": "/gaming/xbox-live/social-platform/rich-presence-strings/rich-presence-strings-policies-and-limitations",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/social-platform/rich-presence-strings/rich-presence-strings-updating-strings.md",
+ "redirect_url": "/gaming/xbox-live/social-platform/rich-presence-strings/rich-presence-strings-updating-strings",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/storage-platform/storage-platform.md",
+ "redirect_url": "/gaming/xbox-live/storage-platform/cloud-storage_nav",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/storage-platform/connected-storage/connected-storage-best-practices.md",
+ "redirect_url": "/gaming/xbox-live/storage-platform/connected-storage/connected-storage-best-practices",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/storage-platform/connected-storage/connected-storage-deleting.md",
+ "redirect_url": "/gaming/xbox-live/storage-platform/connected-storage/connected-storage-deleting",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/storage-platform/connected-storage/connected-storage-loading-on-demand.md",
+ "redirect_url": "/gaming/xbox-live/storage-platform/connected-storage/connected-storage-loading-on-demand",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/storage-platform/connected-storage/connected-storage-loading.md",
+ "redirect_url": "/gaming/xbox-live/storage-platform/connected-storage/connected-storage-loading",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/storage-platform/connected-storage/connected-storage-overview.md",
+ "redirect_url": "/gaming/xbox-live/storage-platform/connected-storage/connected-storage-overview",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/storage-platform/connected-storage/connected-storage-saving.md",
+ "redirect_url": "/gaming/xbox-live/storage-platform/connected-storage/connected-storage-saving",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/storage-platform/connected-storage/connected-storage-technical-overview.md",
+ "redirect_url": "/gaming/xbox-live/storage-platform/connected-storage/connected-storage-technical-overview",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/storage-platform/connected-storage/connected-storage-using-buffers.md",
+ "redirect_url": "/gaming/xbox-live/storage-platform/connected-storage/connected-storage-using-buffers",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/storage-platform/connected-storage/connected-storage-xb-storage.md",
+ "redirect_url": "/gaming/xbox-live/storage-platform/connected-storage/connected-storage-xb-storage",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/storage-platform/xbox-live-title-storage/reading-binary-blobs.md",
+ "redirect_url": "/gaming/xbox-live/storage-platform/xbox-live-title-storage/reading-binary-blobs",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/storage-platform/xbox-live-title-storage/reading-configuration-blobs.md",
+ "redirect_url": "/gaming/xbox-live/storage-platform/xbox-live-title-storage/reading-configuration-blobs",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/storage-platform/xbox-live-title-storage/reading-jsonblobs.md",
+ "redirect_url": "/gaming/xbox-live/storage-platform/xbox-live-title-storage/reading-jsonblobs",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/storage-platform/xbox-live-title-storage/storing-binary-blobs.md",
+ "redirect_url": "/gaming/xbox-live/storage-platform/xbox-live-title-storage/storing-binary-blobs",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/storage-platform/xbox-live-title-storage/storing-jsonblobs.md",
+ "redirect_url": "/gaming/xbox-live/storage-platform/xbox-live-title-storage/storing-jsonblobs",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/storage-platform/xbox-live-title-storage/xbox-live-title-storage.md",
+ "redirect_url": "/gaming/xbox-live/storage-platform/xbox-live-title-storage/xbox-live-title-storage",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/tools/analyze-service-calls.md",
+ "redirect_url": "/gaming/xbox-live/tools/analyze-service-calls",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/tools/tools.md",
+ "redirect_url": "/gaming/xbox-live/tools/tools",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/tools/xbox-live-account-tool.md",
+ "redirect_url": "/gaming/xbox-live/tools/xbox-live-account-tool",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/using-xbox-live/porting-xbox-live-code-from-xdk-to-uwp.md",
+ "redirect_url": "/gaming/xbox-live/using-xbox-live/porting-xbox-live-code-from-xdk-to-uwp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/using-xbox-live/using-xbox-live.md",
+ "redirect_url": "/gaming/xbox-live/using-xbox-live/using-xbox-live",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/using-xbox-live/auth/authentication-for-UWP-projects.md",
+ "redirect_url": "/gaming/xbox-live/using-xbox-live/auth/authentication-for-UWP-projects",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/using-xbox-live/auth/authentication-for-XDK-projects.md",
+ "redirect_url": "/gaming/xbox-live/using-xbox-live/auth/authentication-for-XDK-projects",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/using-xbox-live/auth/authentication.md",
+ "redirect_url": "/gaming/xbox-live/using-xbox-live/auth/authentication_nav",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/using-xbox-live/auth/retrieving-windows-system-user-on-UWP.md",
+ "redirect_url": "/gaming/xbox-live/using-xbox-live/auth/retrieving-windows-system-user-on-UWP",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/using-xbox-live/auth/single-point-of-presence.md",
+ "redirect_url": "/gaming/xbox-live/using-xbox-live/auth/single-point-of-presence",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/using-xbox-live/best-practices/best-practices-for-calling-xbox-live.md",
+ "redirect_url": "/gaming/xbox-live/using-xbox-live/best-practices/best-practices-for-calling-xbox-live",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/using-xbox-live/best-practices/best-practices-for-offline.md",
+ "redirect_url": "/gaming/xbox-live/using-xbox-live/best-practices/best-practices-for-offline",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/using-xbox-live/best-practices/fine-grained-rate-limiting.md",
+ "redirect_url": "/gaming/xbox-live/using-xbox-live/best-practices/fine-grained-rate-limiting",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/using-xbox-live/error-handling/error-handling-cpp.md",
+ "redirect_url": "/gaming/xbox-live/using-xbox-live/error-handling/error-handling-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/using-xbox-live/error-handling/error-handling-winrt.md",
+ "redirect_url": "/gaming/xbox-live/using-xbox-live/error-handling/error-handling-winrt",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/using-xbox-live/error-handling/error-handling.md",
+ "redirect_url": "/gaming/xbox-live/using-xbox-live/error-handling/error-handling_nav",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/using-xbox-live/troubleshooting/how-to-set-up-fiddler-for-debugging.md",
+ "redirect_url": "/gaming/xbox-live/using-xbox-live/troubleshooting/how-to-set-up-fiddler-for-debugging",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/using-xbox-live/troubleshooting/troubleshooting-pc-setup.md",
+ "redirect_url": "/gaming/xbox-live/using-xbox-live/troubleshooting/troubleshooting-pc-setup",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/using-xbox-live/troubleshooting/troubleshooting-sign-in.md",
+ "redirect_url": "/gaming/xbox-live/using-xbox-live/troubleshooting/troubleshooting-sign-in",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/using-xbox-live/troubleshooting/troubleshooting-the-xbox-live-services-api.md",
+ "redirect_url": "/gaming/xbox-live/using-xbox-live/troubleshooting/troubleshooting-the-xbox-live-services-api",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/using-xbox-live/troubleshooting/troubleshooting.md",
+ "redirect_url": "/gaming/xbox-live/using-xbox-live/troubleshooting/troubleshooting_nav",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/whats-new/1506-whats-new.md",
+ "redirect_url": "/gaming/xbox-live/whats-new/1506-whats-new",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/whats-new/1508-whats-new.md",
+ "redirect_url": "/gaming/xbox-live/whats-new/1508-whats-new",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/whats-new/1509-whats-new.md",
+ "redirect_url": "/gaming/xbox-live/whats-new/1509-whats-new",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/whats-new/1510-whats-new.md",
+ "redirect_url": "/gaming/xbox-live/whats-new/1510-whats-new",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/whats-new/1602-whats-new.md",
+ "redirect_url": "/gaming/xbox-live/whats-new/1602-whats-new",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/whats-new/1603-whats-new.md",
+ "redirect_url": "/gaming/xbox-live/whats-new/1603-whats-new",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/whats-new/1604-whats-new.md",
+ "redirect_url": "/gaming/xbox-live/whats-new/1604-whats-new",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/whats-new/1606-whats-new.md",
+ "redirect_url": "/gaming/xbox-live/whats-new/1606-whats-new",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/whats-new/1608-whats-new.md",
+ "redirect_url": "/gaming/xbox-live/whats-new/1608-whats-new",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/whats-new/1611-whats-new.md",
+ "redirect_url": "/gaming/xbox-live/whats-new/1611-whats-new",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/whats-new/1612-whats-new.md",
+ "redirect_url": "/gaming/xbox-live/whats-new/1612-whats-new",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/whats-new/1703-whats-new.md",
+ "redirect_url": "/gaming/xbox-live/whats-new/1703-whats-new",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/whats-new/1704-whats-new.md",
+ "redirect_url": "/gaming/xbox-live/whats-new/1704-whats-new",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/whats-new/1705-whats-new.md",
+ "redirect_url": "/gaming/xbox-live/whats-new/1705-whats-new",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/whats-new/1706-whats-new.md",
+ "redirect_url": "/gaming/xbox-live/whats-new/1706-whats-new",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/whats-new/1707-whats-new.md",
+ "redirect_url": "/gaming/xbox-live/whats-new/1707-whats-new",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/whats-new/1708-whats-new.md",
+ "redirect_url": "/gaming/xbox-live/whats-new/1708-whats-new",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/whats-new/whats-new.md",
+ "redirect_url": "/gaming/xbox-live/whats-new/whats-new",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/atoc-xboxlivews-reference.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/atoc-xboxlivews-reference",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/additional/atoc-xboxlivews-reference-additional.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/additional/atoc-xboxlivews-reference-additional",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/additional/authorizationtypes.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/additional/authorizationtypes",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/additional/datatypeoverview.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/additional/datatypeoverview",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/additional/eds-apis.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/additional/eds-apis",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/additional/edsauthorization.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/additional/edsauthorization",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/additional/edscommonheaders.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/additional/edscommonheaders",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/additional/edsparameters.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/additional/edsparameters",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/additional/edsqueryrefiners.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/additional/edsqueryrefiners",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/additional/edsreverselookup.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/additional/edsreverselookup",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/additional/edstables.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/additional/edstables",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/additional/httpstandardheaders.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/additional/httpstandardheaders",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/additional/httpstatuscodes.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/additional/httpstatuscodes",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/additional/pagingparameters.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/additional/pagingparameters",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/enums/atoc-xboxlivews-reference-enums.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/enums/atoc-xboxlivews-reference-enums",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/enums/gvr-enum-gameclipsource.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/enums/gvr-enum-gameclipsource",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/enums/gvr-enum-gameclipstate.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/enums/gvr-enum-gameclipstate",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/enums/gvr-enum-gamecliptypes.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/enums/gvr-enum-gamecliptypes",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/enums/gvr-enum-gameclipuritype.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/enums/gvr-enum-gameclipuritype",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/enums/gvr-enum-gameclipvisibility.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/enums/gvr-enum-gameclipvisibility",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/enums/gvr-enum-thumbnailsource.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/enums/gvr-enum-thumbnailsource",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/enums/gvr-enum-thumbnailtype.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/enums/gvr-enum-thumbnailtype",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/enums/privacy-enum-permissionid.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/enums/privacy-enum-permissionid",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/atoc-xboxlivews-reference-json.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/atoc-xboxlivews-reference-json",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-achievementv2.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-achievementv2",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-activityrecord.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-activityrecord",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-activityrequest.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-activityrequest",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-aggregatesessionsresponse.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-aggregatesessionsresponse",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-batchrequest.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-batchrequest",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-deviceendpoint.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-deviceendpoint",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-devicerecord.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-devicerecord",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-feedback.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-feedback",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-gameclip.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-gameclip",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-gameclipsserviceerrorresponse.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-gameclipsserviceerrorresponse",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-gameclipthumbnail.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-gameclipthumbnail",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-gameclipuri.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-gameclipuri",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-gamemessage.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-gamemessage",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-gameresult.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-gameresult",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-gamesession.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-gamesession",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-gamesessionsummary.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-gamesessionsummary",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-getclipresponse.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-getclipresponse",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/tiles-and-notifications-secondary-tiles.md",
- "redirect_url": "/windows/uwp/design/shell/tiles-and-notifications/secondary-tiles",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-hopperstatsresults.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-hopperstatsresults",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/tiles-and-notifications-send-local-toast.md",
- "redirect_url": "/windows/uwp/design/shell/tiles-and-notifications/send-local-toast",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-initialuploadrequest.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-initialuploadrequest",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/tiles-and-notifications-sending-a-local-tile-notification.md",
- "redirect_url": "/windows/uwp/design/shell/tiles-and-notifications/sending-a-local-tile-notification",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-initialuploadresponse.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-initialuploadresponse",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/tiles-and-notifications-special-tile-templates-catalog.md",
- "redirect_url": "/windows/uwp/design/shell/tiles-and-notifications/special-tile-templates-catalog",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-inventoryitem.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-inventoryitem",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/tiles-and-notifications-the-code-generated-by-the-push-notification-wizard.md",
- "redirect_url": "/windows/uwp/design/shell/tiles-and-notifications/the-code-generated-by-the-push-notification-wizard",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-lastseenrecord.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-lastseenrecord",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/tiles-and-notifications-toast-schema.md",
- "redirect_url": "/windows/uwp/design/shell/tiles-and-notifications/toast-schema",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-matchticket.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-matchticket",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/tiles-and-notifications-toast-xml-schema.md",
- "redirect_url": "/windows/uwp/design/shell/tiles-and-notifications/toast-xml-schema",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-mediaasset.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-mediaasset",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/tiles-and-notifications-windows-push-notification-services--wns--overview.md",
- "redirect_url": "/windows/uwp/design/shell/tiles-and-notifications/windows-push-notification-services--wns--overview",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-mediarecord.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-mediarecord",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/tiles-badges-notifications.md",
- "redirect_url": "/windows/uwp/design/shell/tiles-and-notifications/index",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-mediarequest.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-mediarequest",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/time-picker.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/time-picker",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-multiplayeractivitydetails.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-multiplayeractivitydetails",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-multiplayersession.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-multiplayersession",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-multiplayersessionreference.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-multiplayersessionreference",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-multiplayersessionrequest.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-multiplayersessionrequest",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-paginginfo.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-paginginfo",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-peoplelist.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-peoplelist",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-permissioncheckbatchrequest.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-permissioncheckbatchrequest",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-permissioncheckbatchresponse.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-permissioncheckbatchresponse",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-permissioncheckbatchuserresponse.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-permissioncheckbatchuserresponse",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-permissioncheckresponse.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-permissioncheckresponse",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-permissioncheckresult.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-permissioncheckresult",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-person.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-person",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-personsummary.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-personsummary",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-player.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-player",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-presencerecord.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-presencerecord",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-profile.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-profile",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-progression.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-progression",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-property.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-property",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-queryclipsresponse.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-queryclipsresponse",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-quota.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-quota",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-requirement.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-requirement",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-resetreputation.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-resetreputation",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-reward.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-reward",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-richpresencerequest.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-richpresencerequest",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-serviceerror.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-serviceerror",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-serviceerrorresponse.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-serviceerrorresponse",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-sessionentry.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-sessionentry",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-titleassociation.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-titleassociation",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-titleblob.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-titleblob",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-titlerecord.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-titlerecord",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-titlerequest.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-titlerequest",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-updatemetadatarequest.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-updatemetadatarequest",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-user.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-user",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-userclaims.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-userclaims",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-userlist.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-userlist",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-usersettings.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-usersettings",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-usertitlev2.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-usertitlev2",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-verifystringresult.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-verifystringresult",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "uwp/xbox-live/xbox-live-rest/json/json-xuidlist.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-xuidlist",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/toggles.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/toggles",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/atoc-xboxlivews-reference-uris.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/atoc-xboxlivews-reference-uris",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/tooltips.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/tooltips",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/achievements/atoc-reference-achievementsv2.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/achievements/atoc-reference-achievementsv2",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/tree-view.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/tree-view",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/achievements/uri-achievementsusersxuidachievementsgetv2.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/achievements/uri-achievementsusersxuidachievementsgetv2",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/web-view.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/web-view",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/achievements/uri-achievementsusersxuidachievementsv2.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/achievements/uri-achievementsusersxuidachievementsv2",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/xaml-styles.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/xaml-styles",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/achievements/uri-usersxuidachievementsscidachievementid.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/achievements/uri-usersxuidachievementsscidachievementid",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/xaml-theme-resources.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/xaml-theme-resources",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/achievements/uri-usersxuidachievementsscidachievementidget.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/achievements/uri-usersxuidachievementsscidachievementidget",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/tiles-and-notifications/channel-types.md",
- "redirect_url": "/windows/uwp/design/shell/tiles-and-notifications/channel-types",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/dvr/atoc-reference-dvr.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/dvr/atoc-reference-dvr",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/tiles-and-notifications/chaseable-tile-notifications.md",
- "redirect_url": "/windows/uwp/design/shell/tiles-and-notifications/chaseable-tile-notifications",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/dvr/uri-publicscidclips.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/dvr/uri-publicscidclips",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/tiles-and-notifications/notification-listener.md",
- "redirect_url": "/windows/uwp/design/shell/tiles-and-notifications/notification-listener",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/dvr/uri-publicscidclipsget.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/dvr/uri-publicscidclipsget",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/controls-and-patterns/tiles-and-notifications/tile-schema.md",
- "redirect_url": "/windows/uwp/design/shell/tiles-and-notifications/tile-schema",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/dvr/uri-uri.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/dvr/uri-uri",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/design-downloads/index.md",
- "redirect_url": "/windows/uwp/design/downloads/index",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/dvr/uri-uriget.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/dvr/uri-uriget",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/in-app-help/external-help.md",
- "redirect_url": "/windows/uwp/design/in-app-help/external-help",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/dvr/uri-uriput.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/dvr/uri-uriput",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/in-app-help/guidelines-for-app-help.md",
- "redirect_url": "/windows/uwp/design/in-app-help/guidelines-for-app-help",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/dvr/uri-usersmescidclips.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/dvr/uri-usersmescidclips",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/in-app-help/in-app-help.md",
- "redirect_url": "/windows/uwp/design/in-app-help/in-app-help",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/dvr/uri-usersmescidclipsgameclipid.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/dvr/uri-usersmescidclipsgameclipid",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/in-app-help/instructional-ui.md",
- "redirect_url": "/windows/uwp/design/in-app-help/instructional-ui",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/dvr/uri-usersmescidclipsgameclipiddelete.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/dvr/uri-usersmescidclipsgameclipiddelete",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/in-app-help/voice-and-tone.md",
- "redirect_url": "/windows/uwp/design/style/writing-style",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/dvr/uri-usersmescidclipsgameclipidpost.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/dvr/uri-usersmescidclipsgameclipidpost",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/style/voice-and-tone.md",
- "redirect_url": "/windows/uwp/design/style/writing-style",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/dvr/uri-usersmescidclipspost.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/dvr/uri-usersmescidclipspost",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/input-and-devices/access-keys.md",
- "redirect_url": "/windows/uwp/design/input/access-keys",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/dvr/uri-usersowneridclips.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/dvr/uri-usersowneridclips",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/input-and-devices/convert-ink-to-text.md",
- "redirect_url": "/windows/uwp/design/input/convert-ink-to-text",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/dvr/uri-usersowneridclipsget.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/dvr/uri-usersowneridclipsget",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/input-and-devices/custom-keyboard-interactions.md",
- "redirect_url": "/windows/uwp/design/input/custom-keyboard-interactions",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/dvr/uri-usersowneridscidclipsgameclipid.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/dvr/uri-usersowneridscidclipsgameclipid",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/input-and-devices/custom-text-input.md",
- "redirect_url": "/windows/uwp/design/input/custom-text-input",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/dvr/uri-usersowneridscidclipsgameclipidget.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/dvr/uri-usersowneridscidclipsgameclipidget",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/input-and-devices/define-custom-recognition-constraints.md",
- "redirect_url": "/windows/uwp/design/input/define-custom-recognition-constraints",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/gamerpic/atoc-reference-gamerpic.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/gamerpic/atoc-reference-gamerpic",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/input-and-devices/designing-for-tv.md",
- "redirect_url": "/windows/uwp/design/devices/designing-for-tv",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/gamerpic/uri-usersmegamerpic.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/gamerpic/uri-usersmegamerpic",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/input-and-devices/device-primer.md",
- "redirect_url": "/windows/uwp/design/devices/index",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/gamerpic/uri-usersmegamerpicput.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/gamerpic/uri-usersmegamerpicput",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/input-and-devices/enable-continuous-dictation.md",
- "redirect_url": "/windows/uwp/design/input/enable-continuous-dictation",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/gsdk/atoc-gsdk-uri-reference.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/gsdk/atoc-gsdk-uri-reference",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/input-and-devices/gamepad-and-remote-interactions.md",
- "redirect_url": "/windows/uwp/design/input/gamepad-and-remote-interactions",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/gsdk/uri-qosservers-get.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/gsdk/uri-qosservers-get",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/input-and-devices/guidelines-for-cross-slide.md",
- "redirect_url": "/windows/uwp/design/input/guidelines-for-cross-slide",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/gsdk/uri-qosservers.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/gsdk/uri-qosservers",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/input-and-devices/guidelines-for-optical-zoom.md",
- "redirect_url": "/windows/uwp/design/input/guidelines-for-optical-zoom",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/gsdk/uri-titlestitleidclusters-post.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/gsdk/uri-titlestitleidclusters-post",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/input-and-devices/guidelines-for-panning.md",
- "redirect_url": "/windows/uwp/design/input/guidelines-for-panning",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/gsdk/uri-titlestitleidclusters.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/gsdk/uri-titlestitleidclusters",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/input-and-devices/guidelines-for-rotation.md",
- "redirect_url": "/windows/uwp/design/input/guidelines-for-rotation",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/gsdk/uri-titlestitleidsessionhosts-post.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/gsdk/uri-titlestitleidsessionhosts-post",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/input-and-devices/guidelines-for-targeting.md",
- "redirect_url": "/windows/uwp/design/input/guidelines-for-targeting",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/gsdk/uri-titlestitleidsessionhosts.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/gsdk/uri-titlestitleidsessionhosts",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/input-and-devices/guidelines-for-textselection.md",
- "redirect_url": "/windows/uwp/design/input/guidelines-for-textselection",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/gsdk/uri-titlestitleidsessionssessionidallocationstatus-get.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/gsdk/uri-titlestitleidsessionssessionidallocationstatus-get",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/input-and-devices/guidelines-for-visualfeedback.md",
- "redirect_url": "/windows/uwp/design/input/guidelines-for-visualfeedback",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/gsdk/uri-titlestitleidsessionssessionidallocationstatus.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/gsdk/uri-titlestitleidsessionssessionidallocationstatus",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/input-and-devices/handle-pointer-input.md",
- "redirect_url": "/windows/uwp/design/input/handle-pointer-input",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/gsdk/uri-titlestitleidvariants-post.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/gsdk/uri-titlestitleidvariants-post",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/input-and-devices/identify-input-devices.md",
- "redirect_url": "/windows/uwp/design/input/identify-input-devices",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/gsdk/uri-titlestitleidvariants.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/gsdk/uri-titlestitleidvariants",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/input-and-devices/index.md",
- "redirect_url": "/windows/uwp/design/input/index",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/leaderboard/atoc-reference-leaderboard.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/leaderboard/atoc-reference-leaderboard",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/input-and-devices/ink-toolbar.md",
- "redirect_url": "/windows/uwp/design/input/ink-toolbar",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/leaderboard/uri-scidsscidleaderboardsleaderboardname.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/leaderboard/uri-scidsscidleaderboardsleaderboardname",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/input-and-devices/input-primer.md",
- "redirect_url": "/windows/uwp/design/input/input-primer",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/leaderboard/uri-scidsscidleaderboardsleaderboardnameget.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/leaderboard/uri-scidsscidleaderboardsleaderboardnameget",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/input-and-devices/keyboard-accelerators.md",
- "redirect_url": "/windows/uwp/design/input/keyboard-accelerators",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/leaderboard/uri-scidsscidleaderboardsleaderboardnamegetvaluemetadata.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/leaderboard/uri-scidsscidleaderboardsleaderboardnamegetvaluemetadata",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/input-and-devices/keyboard-events.md",
- "redirect_url": "/windows/uwp/design/input/keyboard-events",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/leaderboard/uri-usersxuidscidstatnamepeople.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/leaderboard/uri-usersxuidscidstatnamepeople",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/input-and-devices/keyboard-interactions.md",
- "redirect_url": "/windows/uwp/design/input/keyboard-interactions",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/leaderboard/uri-usersxuidscidstatnamepeopleget.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/leaderboard/uri-usersxuidscidstatnamepeopleget",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/input-and-devices/manage-issues-with-audio-input.md",
- "redirect_url": "/windows/uwp/design/input/manage-issues-with-audio-input",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/lists/atoc-reference-lists.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/lists/atoc-reference-lists",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/input-and-devices/managing-focus-navigation.md",
- "redirect_url": "/windows/uwp/design/input/managing-focus-navigation",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/lists/uri-usersxuidlistspinslistname.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/lists/uri-usersxuidlistspinslistname",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/input-and-devices/mouse-interactions.md",
- "redirect_url": "/windows/uwp/design/input/mouse-interactions",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/lists/uri-usersxuidlistspinslistnamecontainsitems.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/lists/uri-usersxuidlistspinslistnamecontainsitems",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/input-and-devices/multiple-input-design-guidelines.md",
- "redirect_url": "/windows/uwp/design/input/multiple-input-design-guidelines",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/lists/uri-usersxuidlistspinslistnamecontainsitemspost.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/lists/uri-usersxuidlistspinslistnamecontainsitemspost",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/input-and-devices/pen-and-stylus-interactions.md",
- "redirect_url": "/windows/uwp/design/input/pen-and-stylus-interactions",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/lists/uri-usersxuidlistspinslistnamedelete.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/lists/uri-usersxuidlistspinslistnamedelete",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/input-and-devices/respond-to-the-presence-of-the-touch-keyboard.md",
- "redirect_url": "/windows/uwp/design/input/respond-to-the-presence-of-the-touch-keyboard",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/lists/uri-usersxuidlistspinslistnameget.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/lists/uri-usersxuidlistspinslistnameget",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/input-and-devices/save-and-load-ink.md",
- "redirect_url": "/windows/uwp/design/input/save-and-load-ink",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/lists/uri-usersxuidlistspinslistnameindex.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/lists/uri-usersxuidlistspinslistnameindex",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/input-and-devices/set-speech-recognition-timeouts.md",
- "redirect_url": "/windows/uwp/design/input/set-speech-recognition-timeouts",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/lists/uri-usersxuidlistspinslistnameindexpost.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/lists/uri-usersxuidlistspinslistnameindexpost",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/input-and-devices/specify-the-speech-recognizer-language.md",
- "redirect_url": "/windows/uwp/design/input/specify-the-speech-recognizer-language",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/lists/uri-usersxuidlistspinslistnamepost.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/lists/uri-usersxuidlistspinslistnamepost",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/input-and-devices/speech-interactions.md",
- "redirect_url": "/windows/uwp/design/input/speech-interactions",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/lists/uri-usersxuidlistspinslistnameput.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/lists/uri-usersxuidlistspinslistnameput",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/input-and-devices/speech-recognition.md",
- "redirect_url": "/windows/uwp/design/input/speech-recognition",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/lists/uri-usersxuidlistspinslistnameremoveitems.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/lists/uri-usersxuidlistspinslistnameremoveitems",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/input-and-devices/touch-interactions.md",
- "redirect_url": "/windows/uwp/design/input/touch-interactions",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/lists/uri-usersxuidlistspinslistnameremoveitemsdelete.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/lists/uri-usersxuidlistspinslistnameremoveitemsdelete",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/input-and-devices/touchpad-interactions.md",
- "redirect_url": "/windows/uwp/design/input/touchpad-interactions",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/lists/uri-usersxuidlistspinslistnameremoveitemspost.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/lists/uri-usersxuidlistspinslistnameremoveitemspost",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/input-and-devices/use-input-scope-to-change-the-touch-keyboard.md",
- "redirect_url": "/windows/uwp/design/input/use-input-scope-to-change-the-touch-keyboard",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/atoc-reference-marketplace.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/atoc-reference-marketplace",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/input-and-devices/windows-wheel-interactions.md",
- "redirect_url": "/windows/uwp/design/input/windows-wheel-interactions",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-inventory.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-inventory",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/layout/alignment-margin-padding.md",
- "redirect_url": "/windows/uwp/design/layout/alignment-margin-padding",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-inventoryconsumablesitemurl.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-inventoryconsumablesitemurl",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/layout/boxpanel-example-custom-panel.md",
- "redirect_url": "/windows/uwp/design/layout/boxpanel-example-custom-panel",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-inventoryconsumablesitemurlpost.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-inventoryconsumablesitemurlpost",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/layout/commanding-basics.md",
- "redirect_url": "/windows/uwp/design/basics/commanding-basics",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-inventoryget.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-inventoryget",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/layout/content-as-objects.md",
- "redirect_url": "/windows/uwp/design",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-inventoryitemurl.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-inventoryitemurl",
"redirect_document_id": false
},
{
- "source_path": "uwp/layout/content-basics.md",
- "redirect_url": "/windows/uwp/design/basics/content-basics",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-inventoryitemurlget.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-inventoryitemurlget",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/layout/custom-panels-overview.md",
- "redirect_url": "/windows/uwp/design/layout/custom-panels-overview",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-localecrossmediagroupsearch.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-localecrossmediagroupsearch",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/layout/design-and-ui-intro.md",
- "redirect_url": "/windows/uwp/design/basics/design-and-ui-intro",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-localecrossmediagroupsearchget.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-localecrossmediagroupsearchget",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/layout/grid-tutorial.md",
- "redirect_url": "/windows/uwp/design/layout/grid-tutorial",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalebrowse.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalebrowse",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/layout/index.md",
- "redirect_url": "/windows/uwp/design/layout/index",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalebrowseget.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalebrowseget",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/layout/layout-panels.md",
- "redirect_url": "/windows/uwp/design/layout/layout-panels",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalecontentrating.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalecontentrating",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/layout/layouts-with-xaml.md",
- "redirect_url": "/windows/uwp/design/layout/layouts-with-xaml",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalecontentratingget.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalecontentratingget",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/layout/navigate-between-two-pages.md",
- "redirect_url": "/windows/uwp/design/basics/navigate-between-two-pages",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocaledetails.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocaledetails",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/layout/navigation-basics.md",
- "redirect_url": "/windows/uwp/design/basics/navigation-basics",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocaledetailsget.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocaledetailsget",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/layout/navigation-history-and-backwards-navigation.md",
- "redirect_url": "/windows/uwp/design/basics/navigation-history-and-backwards-navigation",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalefields.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalefields",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/layout/screen-sizes-and-breakpoints-for-responsive-design.md",
- "redirect_url": "/windows/uwp/design/layout/screen-sizes-and-breakpoints-for-responsive-design",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalefieldsget.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalefieldsget",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/layout/show-multiple-views.md",
- "redirect_url": "/windows/uwp/design/layout/show-multiple-views",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemediaitemtypequeryrefinersubqueryrefinervalues.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemediaitemtypequeryrefinersubqueryrefinervalues",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/style/acrylic.md",
- "redirect_url": "/windows/uwp/design/style/acrylic",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemediaitemtypequeryrefinersubqueryrefinervaluesget.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemediaitemtypequeryrefinersubqueryrefinervaluesget",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/style/balancing-style-and-consistency.md",
- "redirect_url": "/windows/uwp/design/style/balancing-style-and-consistency",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemetadatamediagroups.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemetadatamediagroups",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/style/color.md",
- "redirect_url": "/windows/uwp/design/style/color",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemetadatamediagroupsget.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemetadatamediagroupsget",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/style/connected-animation.md",
- "redirect_url": "/windows/uwp/design/motion/connected-animation",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemetadatamediagroupsmediaitemtypes.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemetadatamediagroupsmediaitemtypes",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/style/content-transition-animations.md",
- "redirect_url": "/windows/uwp/design/motion/content-transition-animations",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemetadatamediagroupsmediaitemtypesget.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemetadatamediagroupsmediaitemtypesget",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/style/icons.md",
- "redirect_url": "/windows/uwp/design/style/icons",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemetadatamediaitemtypefields.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemetadatamediaitemtypefields",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/style/index.md",
- "redirect_url": "/windows/uwp/design/style/index",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemetadatamediaitemtypefieldsget.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemetadatamediaitemtypefieldsget",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/style/motion-dragdrop.md",
- "redirect_url": "/windows/uwp/design/motion/motion-dragdrop",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemetadatamediaitemtypequeryrefiners.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemetadatamediaitemtypequeryrefiners",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/style/motion-edgebased.md",
- "redirect_url": "/windows/uwp/design/motion/motion-edgebased",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemetadatamediaitemtypequeryrefinersget.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemetadatamediaitemtypequeryrefinersget",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/style/motion-fade.md",
- "redirect_url": "/windows/uwp/design/motion/motion-fade",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemetadatamediaitemtypequeryrefinersqueryrefinername.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemetadatamediaitemtypequeryrefinersqueryrefinername",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/style/motion-list.md",
- "redirect_url": "/windows/uwp/design/motion/motion-list",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemetadatamediaitemtypequeryrefinersqueryrefinernameget.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemetadatamediaitemtypequeryrefinersqueryrefinernameget",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/style/motion-pointer.md",
- "redirect_url": "/windows/uwp/design/motion/motion-pointer",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemetadatamediaitemtypes.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemetadatamediaitemtypes",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/style/motion-popup-animations.md",
- "redirect_url": "/windows/uwp/design/motion/motion-popup-animations",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemetadatamediaitemtypesget.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemetadatamediaitemtypesget",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/style/motion-reposition.md",
- "redirect_url": "/windows/uwp/design/motion/motion-reposition",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemetadatamediaitemtypesortorders.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemetadatamediaitemtypesortorders",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/style/motion.md",
- "redirect_url": "/windows/uwp/design/motion/index",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemetadatamediaitemtypesortordersget.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemetadatamediaitemtypesortordersget",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/style/parallax.md",
- "redirect_url": "/windows/uwp/design/motion/parallax",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalesinglemediagroupsearch.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalesinglemediagroupsearch",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/style/reveal.md",
- "redirect_url": "/windows/uwp/design/style/index",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalesinglemediagroupsearchget.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalesinglemediagroupsearchget",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/style/reveal.md",
- "redirect_url": "/windows/uwp/design/style/index",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/matchtickets/atoc-reference-matchtickets.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/matchtickets/atoc-reference-matchtickets",
"redirect_document_id": false
},
{
- "source_path": "uwp/style/segoe-ui-symbol-font.md",
- "redirect_url": "/windows/uwp/design/style/segoe-ui-symbol-font",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/matchtickets/uri-scidhoppernameticketid.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/matchtickets/uri-scidhoppernameticketid",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/style/sound.md",
- "redirect_url": "/windows/uwp/design/style/sound",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/matchtickets/uri-scidhoppernameticketiddelete.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/matchtickets/uri-scidhoppernameticketiddelete",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/style/title-bar.md",
- "redirect_url": "/windows/uwp/design/shell/title-bar",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/matchtickets/uri-serviceconfigsscidhoppershoppername.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/matchtickets/uri-serviceconfigsscidhoppershoppername",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/design/style/fonts.md",
- "redirect_url": "/windows/uwp/design/style/typography",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/matchtickets/uri-serviceconfigsscidhoppershoppernamepost.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/matchtickets/uri-serviceconfigsscidhoppershoppernamepost",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/usability/index.md",
- "redirect_url": "/windows/uwp/design/usability/index",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/matchtickets/uri-serviceconfigsscidhoppershoppernamestats.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/matchtickets/uri-serviceconfigsscidhoppershoppernamestats",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/globalizing/adjust-layout-and-fonts--and-support-rtl.md",
- "redirect_url": "/windows/uwp/design/globalizing/adjust-layout-and-fonts--and-support-rtl",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/matchtickets/uri-serviceconfigsscidhoppershoppernamestatsget.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/matchtickets/uri-serviceconfigsscidhoppershoppernamestatsget",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/globalizing/glob-numeralsystem-values.md",
- "redirect_url": "/windows/uwp/design/globalizing/glob-numeralsystem-values",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/people/atoc-reference-people.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/people/atoc-reference-people",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/globalizing/globalizing-portal.md",
- "redirect_url": "/windows/uwp/design/globalizing/globalizing-portal",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/people/uri-usersowneridpeople.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/people/uri-usersowneridpeople",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/globalizing/guidelines-and-checklist-for-globalizing-your-app.md",
- "redirect_url": "/windows/uwp/design/globalizing/guidelines-and-checklist-for-globalizing-your-app",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/people/uri-usersowneridpeopleget.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/people/uri-usersowneridpeopleget",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/globalizing/loc-international-fonts.md",
- "redirect_url": "/windows/uwp/design/globalizing/loc-international-fonts",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/people/uri-usersowneridpeopletargetid.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/people/uri-usersowneridpeopletargetid",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/globalizing/manage-language-and-region.md",
- "redirect_url": "/windows/uwp/design/globalizing/manage-language-and-region",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/people/uri-usersowneridpeopletargetidget.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/people/uri-usersowneridpeopletargetidget",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/globalizing/prepare-your-app-for-localization.md",
- "redirect_url": "/windows/uwp/design/globalizing/prepare-your-app-for-localization",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/people/uri-usersowneridpeoplexuids.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/people/uri-usersowneridpeoplexuids",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/globalizing/use-global-ready-formats.md",
- "redirect_url": "/windows/uwp/design/globalizing/use-global-ready-formats",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/people/uri-usersowneridpeoplexuidspost.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/people/uri-usersowneridpeoplexuidspost",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/globalizing/use-patterns-to-format-dates-and-times.md",
- "redirect_url": "/windows/uwp/design/globalizing/use-patterns-to-format-dates-and-times",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/people/uri-usersowneridsummary.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/people/uri-usersowneridsummary",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/data-access/entity-framework-7-with-sqlite-for-csharp-apps.md",
- "redirect_url": "/ef/core/get-started/uwp/getting-started",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/people/uri-usersowneridsummaryget.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/people/uri-usersowneridsummaryget",
"redirect_document_id": false
},
{
- "source_path": "uwp/app-resources/tile-toast-language-scale-contrast.md",
- "redirect_url": "/windows/uwp/design/shell/tiles-and-notifications/tile-toast-language-scale-contrast",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/presence/atoc-reference-presence.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/presence/atoc-reference-presence",
"redirect_document_id": false
},
{
- "source_path": "uwp/graphics/using-brushes.md",
- "redirect_url": "/windows/uwp/design/style/brushes",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/presence/uri-usersbatch.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/presence/uri-usersbatch",
"redirect_document_id": false
},
{
- "source_path": "uwp/graphics/animations-overview.md",
- "redirect_url": "/windows/uwp/design/motion/xaml-animation",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/presence/uri-usersbatchpost.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/presence/uri-usersbatchpost",
"redirect_document_id": false
},
{
- "source_path": "uwp/graphics/storyboarded-animations.md",
- "redirect_url": "/windows/uwp/design/motion/storyboarded-animations",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/presence/uri-usersme.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/presence/uri-usersme",
"redirect_document_id": false
},
{
- "source_path": "uwp/graphics/key-frame-and-easing-function-animations.md",
- "redirect_url": "/windows/uwp/design/motion/key-frame-and-easing-function-animations",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/presence/uri-usersmeget.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/presence/uri-usersmeget",
"redirect_document_id": false
},
{
- "source_path": "uwp/graphics/drawing-shapes.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/shapes",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/presence/uri-usersmegroupsmoniker.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/presence/uri-usersmegroupsmoniker",
"redirect_document_id": false
},
{
- "source_path": "uwp/graphics/transforms-overview.md",
- "redirect_url": "/windows/uwp/design/layout/transforms",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/presence/uri-usersmegroupsmonikerget.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/presence/uri-usersmegroupsmonikerget",
"redirect_document_id": false
},
{
- "source_path": "uwp/graphics/3-d-perspective-effects.md",
- "redirect_url": "/windows/uwp/design/layout/3-d-perspective-effects",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/presence/uri-usersxuid.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/presence/uri-usersxuid",
"redirect_document_id": false
},
{
- "source_path": "uwp/graphics/index.md",
- "redirect_url": "/windows/uwp/design/style",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/presence/uri-usersxuiddevicescurrenttitlescurrent.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/presence/uri-usersxuiddevicescurrenttitlescurrent",
"redirect_document_id": false
},
{
- "source_path": "uwp/debug-test-perf/device-portal-xbox.md",
- "redirect_url": "/windows/uwp/xbox-apps/device-portal-xbox",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/presence/uri-usersxuiddevicescurrenttitlescurrentdelete.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/presence/uri-usersxuiddevicescurrenttitlescurrentdelete",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/social-platform/people-system/xbox-360-friends-backward-compatibility.md",
- "redirect_url": "/gaming/xbox-live/social-platform/people-system/people-system_nav",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/presence/uri-usersxuiddevicescurrenttitlescurrentpost.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/presence/uri-usersxuiddevicescurrenttitlescurrentpost",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/get-started-with-creators/sign-in-to-xbox-live-in-unity.md",
- "redirect_url": "/gaming/xbox-live/get-started/setup-ide/creators/unity-win10/signin/unity-signin_nav",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/presence/uri-usersxuidget.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/presence/uri-usersxuidget",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/multiplayer/xbox-integrated-multiplayer-overview.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/xbox-integrated-multiplayer/xbox-integrated-multiplayer",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/presence/uri-usersxuidgroupsmoniker.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/presence/uri-usersxuidgroupsmoniker",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/storage-platform/connected-storage/connected-storage-clearing.md",
- "redirect_url": "/windows/uwp/xbox-live/storage-platform/connected-storage/connected-storage-xb-storage",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/presence/uri-usersxuidgroupsmonikerbroadcasting.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/presence/uri-usersxuidgroupsmonikerbroadcasting",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/design/input/custom-keyboard-interactions.md",
- "redirect_url": "/windows/uwp/design/input/focus-navigation",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/presence/uri-usersxuidgroupsmonikerbroadcastingcount.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/presence/uri-usersxuidgroupsmonikerbroadcastingcount",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/design/input/managing-focus-navigation.md",
- "redirect_url": "/windows/uwp/design/input/focus-navigation-programmatic",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/presence/uri-usersxuidgroupsmonikerbroadcastingcountget.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/presence/uri-usersxuidgroupsmonikerbroadcastingcountget",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/social-platform/people-system/privacy-and-people-i-know.md",
- "redirect_url": "/windows/uwp/xbox-live/social-platform/people-system/xbox-live-people-system",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/presence/uri-usersxuidgroupsmonikerbroadcastingget.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/presence/uri-usersxuidgroupsmonikerbroadcastingget",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/get-started/whats-a-uwp.md",
- "redirect_url": "/windows/uwp/get-started/universal-application-platform-guide",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/presence/uri-usersxuidgroupsmonikerget.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/presence/uri-usersxuidgroupsmonikerget",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/porting/hwa-to-uwp-root.md",
- "redirect_url": "/microsoft-edge/progressive-web-apps",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/privacy/atoc-reference-privacyv2.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/privacy/atoc-reference-privacyv2",
"redirect_document_id": false
},
{
- "source_path": "uwp/porting/hwa-access-features.md",
- "redirect_url": "/microsoft-edge/progressive-web-apps",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/privacy/uri-privacyusersowneridpeoplemute.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/privacy/uri-privacyusersowneridpeoplemute",
"redirect_document_id": false
},
{
- "source_path": "uwp/porting/hwa-chrome-conversion.md",
- "redirect_url": "/microsoft-edge/progressive-web-apps",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/privacy/uri-privacyusersowneridpeoplemuteget.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/privacy/uri-privacyusersowneridpeoplemuteget",
"redirect_document_id": false
},
{
- "source_path": "uwp/porting/hwa-create-mac.md",
- "redirect_url": "/microsoft-edge/progressive-web-apps",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/privacy/uri-privacyusersrequestoridpermissionvalidate.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/privacy/uri-privacyusersrequestoridpermissionvalidate",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/resolve-package-upload-errors.md",
- "redirect_url": "/windows/uwp/publish/upload-app-packages",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/privacy/uri-privacyusersrequestoridpermissionvalidateget.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/privacy/uri-privacyusersrequestoridpermissionvalidateget",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/manage-add-ons-in-bulk.md",
- "redirect_url": "/windows/uwp/publish/add-on-submissions",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/privacy/uri-privacyusersrequestoridpermissionvalidatepost.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/privacy/uri-privacyusersrequestoridpermissionvalidatepost",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/associate-azure-ad-with-dev-center.md",
- "redirect_url": "/windows/uwp/publish/associate-azure-ad-with-partner-center",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/privacy/uri-privacyusersxuidpeopleavoid.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/privacy/uri-privacyusersxuidpeopleavoid",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/managing-your-profile.md",
- "redirect_url": "/partner-center/partner-center-account-setup",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/privacy/uri-privacyusersxuidpeopleavoidget.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/privacy/uri-privacyusersxuidpeopleavoidget",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/define-pricing-and-market-selection.md",
- "redirect_url": "/windows/uwp/publish/define-market-selection",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/profileV2/atoc-reference-profiles.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/profileV2/atoc-reference-profiles",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/promote-your-app-report.md",
- "redirect_url": "/windows/uwp/publish/ad-campaign-report",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/profileV2/uri-usersbatchprofilesettings.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/profileV2/uri-usersbatchprofilesettings",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/app-declarations.md",
- "redirect_url": "/windows/uwp/publish/product-declarations",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/profileV2/uri-usersbatchprofilesettingspost.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/profileV2/uri-usersbatchprofilesettingspost",
"redirect_document_id": false
},
{
- "source_path": "uwp/porting/hwa-create-windows.md",
- "redirect_url": "/microsoft-edge/progressive-web-apps",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/profileV2/uri-usersuseridprofilesettingspeopleuserlist.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/profileV2/uri-usersuseridprofilesettingspeopleuserlist",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/tabs-pivot.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/pivot",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/profileV2/uri-usersuseridprofilesettingspeopleuserlistget.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/profileV2/uri-usersuseridprofilesettingspeopleuserlistget",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/dialogs.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/dialogs-and-flyouts/index",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/reputation/atoc-reference-reputation.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/reputation/atoc-reference-reputation",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/monetize/download-the-cab-file-for-an-oem-hardware-error.md",
- "redirect_url": "/windows-hardware/drivers/dashboard/download-the-cab-file-for-an-oem-hardware-error",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/reputation/uri-reputationusersbatchfeedback.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/reputation/uri-reputationusersbatchfeedback",
"redirect_document_id": false
},
{
- "source_path": "uwp/monetize/download-the-cab-file-for-a-windows-10-driver-error.md",
- "redirect_url": "/windows-hardware/drivers/dashboard/download-the-cab-file-for-a-windows-10-driver-error",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/reputation/uri-reputationusersbatchfeedbackpost.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/reputation/uri-reputationusersbatchfeedbackpost",
"redirect_document_id": false
},
{
- "source_path": "uwp/monetize/download-the-cab-file-for-a-windows-7-or-windows-8.x-driver-error.md",
- "redirect_url": "/windows-hardware/drivers/dashboard/download-the-cab-file-for-a-windows-7-or-windows-8.x-driver-error",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/reputation/uri-reputationusersxuidfeedback.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/reputation/uri-reputationusersxuidfeedback",
"redirect_document_id": false
},
{
- "source_path": "uwp/monetize/get-details-for-an-oem-hardware-error.md",
- "redirect_url": "/windows-hardware/drivers/dashboard/get-details-for-an-oem-hardware-error",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/reputation/uri-reputationusersxuidfeedbackpost.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/reputation/uri-reputationusersxuidfeedbackpost",
"redirect_document_id": false
},
{
- "source_path": "uwp/monetize/get-details-for-a-windows-10-driver-error.md",
- "redirect_url": "/windows-hardware/drivers/dashboard/get-details-for-a-windows-10-driver-error",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/reputation/uri-usersmeresetreputation.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/reputation/uri-usersmeresetreputation",
"redirect_document_id": false
},
{
- "source_path": "uwp/monetize/get-details-for-a-windows-7-or-windows-8.x-driver-error.md",
- "redirect_url": "/windows-hardware/drivers/dashboard/get-details-for-a-windows-7-or-windows-8.x-driver-error",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/reputation/uri-usersmeresetreputationpost.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/reputation/uri-usersmeresetreputationpost",
"redirect_document_id": false
},
{
- "source_path": "uwp/monetize/get-error-reporting-data-for-windows-10-drivers.md",
- "redirect_url": "/windows-hardware/drivers/dashboard/get-error-reporting-data-for-windows-10-drivers",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/reputation/uri-usersxuiddeleteuserdata.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/reputation/uri-usersxuiddeleteuserdata",
"redirect_document_id": false
},
{
- "source_path": "uwp/monetize/get-error-reporting-data-for-windows-7-and-windows-8.x-drivers.md",
- "redirect_url": "/windows-hardware/drivers/dashboard/get-error-reporting-data-for-windows-7-and-windows-8.x-drivers",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/reputation/uri-usersxuiddeleteuserdatapost.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/reputation/uri-usersxuiddeleteuserdatapost",
"redirect_document_id": false
},
{
- "source_path": "uwp/monetize/get-oem-hardware-error-reporting-data.md",
- "redirect_url": "/windows-hardware/drivers/dashboard/get-oem-hardware-error-reporting-data",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/reputation/uri-usersxuidresetreputation.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/reputation/uri-usersxuidresetreputation",
"redirect_document_id": false
},
{
- "source_path": "uwp/machine-learning/index.md",
- "redirect_url": "/windows/ai",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/reputation/uri-usersxuidresetreputationpost.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/reputation/uri-usersxuidresetreputationpost",
"redirect_document_id": false
},
{
- "source_path": "uwp/machine-learning/get-started.md",
- "redirect_url": "/windows/ai",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/atoc-reference-sessiondirectory.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/atoc-reference-sessiondirectory",
"redirect_document_id": false
},
{
- "source_path": "uwp/machine-learning/overview.md",
- "redirect_url": "/windows/ai",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-handles.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-handles",
"redirect_document_id": false
},
{
- "source_path": "uwp/machine-learning/conversion-samples.md",
- "redirect_url": "/windows/ai/convert-model-winmltools",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-handleshandleid.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-handleshandleid",
"redirect_document_id": false
},
{
- "source_path": "uwp/machine-learning/integrate-model.md",
- "redirect_url": "/windows/ai/integrate-model",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-handleshandleiddelete.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-handleshandleiddelete",
"redirect_document_id": false
},
{
- "source_path": "uwp/machine-learning/samples.md",
- "redirect_url": "https://github.com/Microsoft/Windows-Machine-Learning",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-handleshandleidget.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-handleshandleidget",
"redirect_document_id": false
},
{
- "source_path": "uwp/machine-learning/train-ai-model.md",
- "redirect_url": "/windows/ai/get-onnx-model",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-handleshandleidsession.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-handleshandleidsession",
"redirect_document_id": false
},
{
- "source_path": "uwp/composition/lighting.md",
- "redirect_url": "/windows/uwp/composition/xaml-lighting",
- "redirect_document_id": true
- },
- {
- "source_path": "uwp/devices-sensors/nfc.md",
- "redirect_url": "/windows/uwp/devices-sensors/",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-handleshandleidsessionget.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-handleshandleidsessionget",
"redirect_document_id": false
},
{
- "source_path": "uwp/devices-sensors/generate-3mf.md",
- "redirect_url": "/windows/uwp/devices-sensors/3d-generate-3mf",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-handleshandleidsessionput.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-handleshandleidsessionput",
"redirect_document_id": false
},
{
- "source_path": "uwp/devices-sensors/pos-advanced-connectivity.md",
- "redirect_url": "/windows/uwp/devices-sensors/point-of-service",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-handlespost.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-handlespost",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/devices-sensors/pos-barcodescanner-get-started.md",
- "redirect_url": "/windows/uwp/devices-sensors/pos-barcodescanner-configure",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-handlesquery.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-handlesquery",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/design/shell/tiles-and-notifications/app-assets.md",
- "redirect_url": "/windows/apps/design/style/iconography/overview",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-handlesqueryincludepost.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-handlesqueryincludepost",
"redirect_document_id": false
},
{
- "source_path": "hub/apps/design/style/app-icons-and-logos.md",
- "redirect_url": "/windows/apps/design/style/iconography/overview",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-handlesquerypost.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-handlesquerypost",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/configure-xbl/dev-center/data-sharing-udc.md",
- "redirect_url": "/windows/uwp/xbox-live/configure-xbl/dev-center/access-policies-udc",
- "redirect_document_id": true
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigscidsessiontemplatessessiontemplatenamebatch.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigscidsessiontemplatessessiontemplatenamebatch",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/packaging/appinstaller-root.md",
- "redirect_url": "/windows/msix/app-installer/app-installer-root",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigscidsessiontemplatessessiontemplatenamebatchpost.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigscidsessiontemplatessessiontemplatenamebatchpost",
"redirect_document_id": false
},
{
- "source_path": "uwp/packaging/create-appinstallerfile-vs.md",
- "redirect_url": "/windows/msix/app-installer/create-appinstallerfile-vs",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidbatch.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidbatch",
"redirect_document_id": false
},
{
- "source_path": "uwp/packaging/installing-UWP-apps-web.md",
- "redirect_url": "/windows/msix/app-installer/installing-windows10-apps-web",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidbatchpost.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidbatchpost",
"redirect_document_id": false
},
{
- "source_path": "uwp/packaging/install-related-set.md",
- "redirect_url": "/windows/msix/app-installer/install-related-set",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessions.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessions",
"redirect_document_id": false
},
{
- "source_path": "uwp/packaging/troubleshoot-appinstaller-issues.md",
- "redirect_url": "/windows/msix/app-installer/troubleshoot-appinstaller-issues",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessionsget.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessionsget",
"redirect_document_id": false
},
{
- "source_path": "uwp/packaging/web-install-azure.md",
- "redirect_url": "/windows/msix/app-installer/web-install-azure",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessiontemplates.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessiontemplates",
"redirect_document_id": false
},
{
- "source_path": "uwp/packaging/web-install-IIS.md",
- "redirect_url": "/windows/msix/app-installer/web-install-iis",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessiontemplatesget.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessiontemplatesget",
"redirect_document_id": false
},
{
- "source_path": "uwp/packaging/web-install-aws.md",
- "redirect_url": "/windows/msix/app-installer/web-install-aws",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessiontemplatessessiontemplatename.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessiontemplatessessiontemplatename",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/dev-center-insider-program.md",
- "redirect_url": "/windows/uwp/publish",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessiontemplatessessiontemplatenameget.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessiontemplatessessiontemplatenameget",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/advanced-xbox-live-sandboxes.md",
- "redirect_url": "/gaming/xbox-live/advanced-xbox-live-sandboxes",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessiontemplatessessiontemplatenamesessionnamemembersindex.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessiontemplatessessiontemplatenamesessionnamemembersindex",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/developer-program-overview.md",
- "redirect_url": "/gaming/gdk/_content/gc/live/get-started/live-getstarted-nav",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessiontemplatessessiontemplatenamesessionnamemembersindexdelete.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessiontemplatessessiontemplatenamesessionnamemembersindexdelete",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/flatc-async-patterns.md",
- "redirect_url": "/gaming/xbox-live/flatc-async-patterns",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessiontemplatessessiontemplatenamesessionnamemembersservername.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessiontemplatessessiontemplatenamesessionnamemembersservername",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/index.md",
- "redirect_url": "/gaming/xbox-live/index",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessiontemplatessessiontemplatenamesessionnamemembersservernamedelete.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessiontemplatessessiontemplatenamesessionnamemembersservernamedelete",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/introduction-to-xbox-live-apis.md",
- "redirect_url": "/gaming/xbox-live/introduction-to-xbox-live-apis",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessiontemplatessessiontemplatenamesessions.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessiontemplatessessiontemplatenamesessions",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/samples.md",
- "redirect_url": "/gaming/xbox-live/samples",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessiontemplatessessiontemplatenamesessionsget.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessiontemplatessessiontemplatenamesessionsget",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/testing-on-console.md",
- "redirect_url": "/gaming/xbox-live/testing-on-console",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessiontemplatessessiontemplatenamesessionssessionname.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessiontemplatessessiontemplatenamesessionssessionname",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/what-is-xbox-live.md",
- "redirect_url": "/gaming/xbox-live/get-started/what-is-xbox-live",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessiontemplatessessiontemplatenamesessionssessionnameget.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessiontemplatessessiontemplatenamesessionssessionnameget",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-resources.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-resources",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessiontemplatessessiontemplatenamesessionssessionnamemembersme.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessiontemplatessessiontemplatenamesessionssessionnamemembersme",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-sandboxes.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-sandboxes",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessiontemplatessessiontemplatenamesessionssessionnamemembersmedelete.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessiontemplatessessiontemplatenamesessionssessionnamemembersmedelete",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-service-configuration.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-service-configuration",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessiontemplatessessiontemplatenamesessionssessionnameput.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessiontemplatessessiontemplatenamesessionssessionnameput",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-test-accounts.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-test-accounts",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/atoc-reference-storagev2.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/atoc-reference-storagev2",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live.md",
- "redirect_url": "/gaming/xbox-live/",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-globalscidsscid-get.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-globalscidsscid-get",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xboxlive-policies.md",
- "redirect_url": "/gaming/xbox-live/xboxlive-policies",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-globalscidsscid.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-globalscidsscid",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xboxservices-config.md",
- "redirect_url": "/gaming/xbox-live/get-started/setup-ide/managed-partners/vs-win10/xboxservices-config",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-globalscidssciddatapath-get.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-globalscidssciddatapath-get",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xsapi-flat-c.md",
- "redirect_url": "/gaming/xbox-live/xsapi-flat-c",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-globalscidssciddatapath.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-globalscidssciddatapath",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/achievements-2017/achievement-rewards.md",
- "redirect_url": "/gaming/xbox-live/achievements-2017/achievement-rewards",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-globalscidssciddatapathandfilenametype-get.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-globalscidssciddatapathandfilenametype-get",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/achievements-2017/achievements.md",
- "redirect_url": "/gaming/xbox-live/achievements-2017/achievements_nav",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-globalscidssciddatapathandfilenametype.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-globalscidssciddatapathandfilenametype",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/achievements-2017/simplified-achievements.md",
- "redirect_url": "/gaming/xbox-live/achievements-2017/simplified-achievements",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-jsonusersbatchscidssciddatapathandfilenametype-post.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-jsonusersbatchscidssciddatapathandfilenametype-post",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/configure-xbl/windows-dev-center.md",
- "redirect_url": "/gaming/xbox-live/get-started/setup-partner-center/setup-partner-center_nav",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-jsonusersbatchscidssciddatapathandfilenametype.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-jsonusersbatchscidssciddatapathandfilenametype",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/configure-xbl/dev-center/access-policies-udc.md",
- "redirect_url": "/gaming/xbox-live/configure-xbl/dev-center/access-policies-udc",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-jsonusersxuidscidsscid-get.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-jsonusersxuidscidsscid-get",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/configure-xbl/dev-center/achievements-in-udc.md",
- "redirect_url": "/gaming/xbox-live/configure-xbl/dev-center/achievements-in-udc",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-jsonusersxuidscidsscid.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-jsonusersxuidscidsscid",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/configure-xbl/dev-center/featured-stats-and-leaderboards.md",
- "redirect_url": "/gaming/xbox-live/configure-xbl/dev-center/featured-stats-and-leaderboards",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-jsonusersxuidscidssciddatapath-get.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-jsonusersxuidscidssciddatapath-get",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/configure-xbl/dev-center/game-dvr.md",
- "redirect_url": "/gaming/xbox-live/configure-xbl/dev-center/game-dvr",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-jsonusersxuidscidssciddatapath.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-jsonusersxuidscidssciddatapath",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/configure-xbl/dev-center/localized-strings.md",
- "redirect_url": "/gaming/xbox-live/configure-xbl/dev-center/localized-strings",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-jsonusersxuidscidssciddatapathandfilenametype-delete.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-jsonusersxuidscidssciddatapathandfilenametype-delete",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/configure-xbl/dev-center/privileges.md",
- "redirect_url": "/gaming/xbox-live/configure-xbl/dev-center/privileges",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-jsonusersxuidscidssciddatapathandfilenametype-get.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-jsonusersxuidscidssciddatapathandfilenametype-get",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/configure-xbl/dev-center/rich-presence-configuration.md",
- "redirect_url": "/gaming/xbox-live/configure-xbl/dev-center/rich-presence-configuration",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-jsonusersxuidscidssciddatapathandfilenametype-put.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-jsonusersxuidscidssciddatapathandfilenametype-put",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/configure-xbl/dev-center/single-sign-on.md",
- "redirect_url": "/gaming/xbox-live/configure-xbl/dev-center/single-sign-on",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-jsonusersxuidscidssciddatapathandfilenametype.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-jsonusersxuidscidssciddatapathandfilenametype",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/configure-xbl/dev-center/summary.md",
- "redirect_url": "/gaming/xbox-live/configure-xbl/dev-center/summary",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-sessionssessionidscidsscid-get.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-sessionssessionidscidsscid-get",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/configure-xbl/dev-center/title-storage.md",
- "redirect_url": "/gaming/xbox-live/configure-xbl/dev-center/title-storage",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-sessionssessionidscidsscid.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-sessionssessionidscidsscid",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/configure-xbl/dev-center/web-services.md",
- "redirect_url": "/gaming/xbox-live/configure-xbl/dev-center/web-services",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-sessionssessionidscidssciddatapath-get.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-sessionssessionidscidssciddatapath-get",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/configure-xbl/dev-center/xbox-live-setup.md",
- "redirect_url": "/gaming/xbox-live/configure-xbl/dev-center/xbox-live-setup",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-sessionssessionidscidssciddatapath.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-sessionssessionidscidssciddatapath",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/contextual-search/configuring-contextual-search.md",
- "redirect_url": "/gaming/xbox-live/contextual-search/configuring-contextual-search",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-sessionssessionidscidssciddatapathandfilenametype-delete.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-sessionssessionidscidssciddatapathandfilenametype-delete",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/contextual-search/introduction-to-contextual-search.md",
- "redirect_url": "/gaming/xbox-live/contextual-search/introduction-to-contextual-search",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-sessionssessionidscidssciddatapathandfilenametype-get.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-sessionssessionidscidssciddatapathandfilenametype-get",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/data-platform/data-platform.md",
- "redirect_url": "/gaming/xbox-live/data-platform/player-data_nav",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-sessionssessionidscidssciddatapathandfilenametype-put.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-sessionssessionidscidssciddatapathandfilenametype-put",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/data-platform/designing-xbox-live-experiences.md",
- "redirect_url": "/gaming/xbox-live/data-platform/designing-xbox-live-experiences",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-sessionssessionidscidssciddatapathandfilenametype.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-sessionssessionidscidssciddatapathandfilenametype",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/get-started-with-creators/add-controller-support-to-xbox-live-prefabs.md",
- "redirect_url": "/gaming/xbox-live/get-started/setup-ide/creators/unity-win10/add-controller-support-to-xbox-live-prefabs",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-trustedplatformusersbatchscidssciddatapathandfilenametype-post.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-trustedplatformusersbatchscidssciddatapathandfilenametype-post",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/get-started-with-creators/add-multi-user-support.md",
- "redirect_url": "/gaming/xbox-live/get-started/setup-ide/creators/unity-win10/add-multi-user-support",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-trustedplatformusersbatchscidssciddatapathandfilenametype.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-trustedplatformusersbatchscidssciddatapathandfilenametype",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/get-started-with-creators/add-stats-and-leaderboards-in-unity.md",
- "redirect_url": "/gaming/xbox-live/get-started-with-creators/add-stats-and-leaderboards-in-unity",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-trustedplatformusersxuidscidsscid-get.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-trustedplatformusersxuidscidsscid-get",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/get-started-with-creators/authorize-xbox-live-accounts.md",
- "redirect_url": "/gaming/xbox-live/get-started/setup-partner-center/legacy/authorize-xbox-live-accounts",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-trustedplatformusersxuidscidsscid.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-trustedplatformusersxuidscidsscid",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/get-started-with-creators/check-user-privileges-in-unity.md",
- "redirect_url": "/gaming/xbox-live/get-started/setup-ide/creators/unity-win10/check-user-privileges-in-unity",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-trustedplatformusersxuidscidssciddatapath-get.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-trustedplatformusersxuidscidssciddatapath-get",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/get-started-with-creators/configure-xbox-live-in-unity.md",
- "redirect_url": "/gaming/xbox-live/get-started/setup-ide/creators/unity-win10/configure-xbox-live-in-unity",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-trustedplatformusersxuidscidssciddatapath.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-trustedplatformusersxuidscidssciddatapath",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/get-started-with-creators/create-and-test-a-new-creators-title.md",
- "redirect_url": "/gaming/xbox-live/get-started/setup-partner-center/legacy/create-and-test-a-new-creators-title",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-trustedplatformusersxuidscidssciddatapathandfilenametype-delete.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-trustedplatformusersxuidscidssciddatapathandfilenametype-delete",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/get-started-with-creators/creators-step-by-step-guide.md",
- "redirect_url": "/gaming/xbox-live/get-started-with-creators/creators-step-by-step-guide",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-trustedplatformusersxuidscidssciddatapathandfilenametype-get.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-trustedplatformusersxuidscidssciddatapathandfilenametype-get",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/get-started-with-creators/develop-creators-title-with-unity.md",
- "redirect_url": "/gaming/xbox-live/get-started/setup-ide/creators/unity-win10/cr-unity-win10_nav",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-trustedplatformusersxuidscidssciddatapathandfilenametype-put.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-trustedplatformusersxuidscidssciddatapathandfilenametype-put",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/get-started-with-creators/develop-creators-title-with-visual-studio.md",
- "redirect_url": "/gaming/xbox-live/get-started/setup-ide/creators/vs-win10/develop-creators-title-with-visual-studio",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-trustedplatformusersxuidscidssciddatapathandfilenametype.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-trustedplatformusersxuidscidssciddatapathandfilenametype",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/get-started-with-creators/get-started-with-xbox-live-creators.md",
- "redirect_url": "/gaming/xbox-live/get-started/setup-partner-center/setup-partner-center-creators",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-untrustedplatformusersbatchscidssciddatapathandfilenametype-post.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-untrustedplatformusersbatchscidssciddatapathandfilenametype-post",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/get-started-with-creators/playerauthentication-prefab-sign-in.md",
- "redirect_url": "/gaming/xbox-live/get-started/setup-ide/creators/unity-win10/signin/playerauthentication-prefab-sign-in",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-untrustedplatformusersbatchscidssciddatapathandfilenametype.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-untrustedplatformusersbatchscidssciddatapathandfilenametype",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/get-started-with-creators/setup-leaderboard-example-scene.md",
- "redirect_url": "/gaming/xbox-live/get-started-with-creators/setup-leaderboard-example-scene",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-untrustedplatformusersxuidscidsscid-get.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-untrustedplatformusersxuidscidsscid-get",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/get-started-with-creators/sign-in-manager.md",
- "redirect_url": "/gaming/xbox-live/using-xbox-live/auth/authentication_nav",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-untrustedplatformusersxuidscidsscid.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-untrustedplatformusersxuidscidsscid",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/get-started-with-creators/test-visual-studio-build.md",
- "redirect_url": "/gaming/xbox-live/get-started/setup-ide/creators/unity-win10/test-visual-studio-build",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-untrustedplatformusersxuidscidssciddatapath-get.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-untrustedplatformusersxuidscidssciddatapath-get",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/get-started-with-creators/unity-leaderboard-from-scratch-pre1804.md",
- "redirect_url": "/gaming/xbox-live/get-started-with-creators/unity-leaderboard-from-scratch-pre1804",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-untrustedplatformusersxuidscidssciddatapath.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-untrustedplatformusersxuidscidssciddatapath",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/get-started-with-creators/unity-leaderboard-from-scratch.md",
- "redirect_url": "/gaming/xbox-live/get-started-with-creators/unity-leaderboard-from-scratch",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-untrustedplatformusersxuidscidssciddatapathandfilenametype-delete.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-untrustedplatformusersxuidscidssciddatapathandfilenametype-delete",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/get-started-with-creators/unity-prefabs-and-sign-in.md",
- "redirect_url": "/gaming/xbox-live/get-started/setup-ide/creators/unity-win10/signin/unity-prefabs-and-sign-in",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-untrustedplatformusersxuidscidssciddatapathandfilenametype-get.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-untrustedplatformusersxuidscidssciddatapathandfilenametype-get",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/get-started-with-creators/xbox-live-sandboxes-creators.md",
- "redirect_url": "/gaming/xbox-live/get-started-with-creators/xbox-live-sandboxes-creators",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-untrustedplatformusersxuidscidssciddatapathandfilenametype-put.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-untrustedplatformusersxuidscidssciddatapathandfilenametype-put",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/get-started-with-creators/xbox-live-service-configuration-creators.md",
- "redirect_url": "/gaming/xbox-live/get-started-with-creators/xbox-live-service-configuration-creators",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-untrustedplatformusersxuidscidssciddatapathandfilenametype.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-untrustedplatformusersxuidscidssciddatapathandfilenametype",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/get-started-with-partner/add-xbox-live-apis-binary-to-a-uwp-project.md",
- "redirect_url": "/gaming/xbox-live/get-started/setup-ide/managed-partners/vs-win10/add-xbox-live-apis-binary-to-a-uwp-project",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/stringserver/atoc-reference-systemstringsvalidate.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/stringserver/atoc-reference-systemstringsvalidate",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/get-started-with-partner/add-xbox-live-apis-source-to-a-uwp-project.md",
- "redirect_url": "/gaming/xbox-live/get-started/setup-ide/managed-partners/vs-win10/add-xbox-live-apis-source-to-a-uwp-project",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/stringserver/uri-systemstringsvalidate.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/stringserver/uri-systemstringsvalidate",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/get-started-with-partner/add-xbox-live-to-an-xdk-project.md",
- "redirect_url": "/gaming/xbox-live/get-started/setup-ide/managed-partners/vs-xbox/add-xbox-live-to-an-xdk-project",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/stringserver/uri-systemstringsvalidatepost.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/stringserver/uri-systemstringsvalidatepost",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/get-started-with-partner/advanced-xbox-live-sandboxes.md",
- "redirect_url": "/gaming/xbox-live/advanced-xbox-live-sandboxes",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/titlehistory/atoc-reference-titlehistoryv2.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/titlehistory/atoc-reference-titlehistoryv2",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/get-started-with-partner/compile-the-xdk-xbox-live-api-source.md",
- "redirect_url": "/gaming/xbox-live/get-started/setup-ide/managed-partners/vs-xbox/compile-the-xdk-xbox-live-api-source",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/titlehistory/uri-titlehistoryusersxuidhistorytitlesgetv2.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/titlehistory/uri-titlehistoryusersxuidhistorytitlesgetv2",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/get-started-with-partner/configure-your-development-console.md",
- "redirect_url": "/gaming/xbox-live/get-started/setup-ide/managed-partners/vs-xbox/configure-your-development-console",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/titlehistory/uri-titlehistoryusersxuidhistorytitlesv2.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/titlehistory/uri-titlehistoryusersxuidhistorytitlesv2",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/get-started-with-partner/create-a-new-title.md",
- "redirect_url": "/gaming/xbox-live/get-started/setup-partner-center/legacy/create-a-new-title",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/users/atoc-reference-users.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/users/atoc-reference-users",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/get-started-with-partner/get-started-with-cross-play-games.md",
- "redirect_url": "/gaming/xbox-live/get-started-with-partner/get-started-with-cross-play-games",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/users/uri-usersxuidinbox.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/users/uri-usersxuidinbox",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/get-started-with-partner/get-started-with-visual-studio-and-uwp.md",
- "redirect_url": "/gaming/xbox-live/get-started/setup-ide/managed-partners/vs-win10/get-started-with-visual-studio-and-uwp",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/users/uri-usersxuidinboxget.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/users/uri-usersxuidinboxget",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/get-started-with-partner/get-started-with-xbox-live-partner.md",
- "redirect_url": "/gaming/xbox-live/get-started/setup-partner-center/legacy/get-started-with-xbox-live-partner",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/users/uri-usersxuidinboxmessageiddelete.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/users/uri-usersxuidinboxmessageiddelete",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/get-started-with-partner/partner-add-xbox-live-to-unity-uwp.md",
- "redirect_url": "/gaming/xbox-live/get-started/setup-ide/managed-partners/unity-win10/partner-add-xbox-live-to-unity-uwp",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/users/uri-usersxuidinboxmessageidget.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/users/uri-usersxuidinboxmessageidget",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/get-started-with-partner/partner-unity-uwp-il2cpp.md",
- "redirect_url": "/gaming/xbox-live/get-started/setup-ide/managed-partners/unity-win10/partner-unity-uwp-il2cpp",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/users/uri-usersxuidoutbox.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/users/uri-usersxuidoutbox",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/get-started-with-partner/partner-unity-xdk-il2cpp.md",
- "redirect_url": "/gaming/xbox-live/get-started/setup-ide/managed-partners/unity-xbox/partner-unity-xdk-il2cpp",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/users/uri-usersxuidoutboxpost.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/users/uri-usersxuidoutboxpost",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/get-started-with-partner/partners-step-by-step-guide.md",
- "redirect_url": "/gaming/xbox-live/get-started/setup-partner-center/legacy/get-started-with-xbox-live-partner",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/userstats/atoc-reference-userstats.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/userstats/atoc-reference-userstats",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/get-started-with-partner/use-xbox-live-nuget-with-xdk.md",
- "redirect_url": "/gaming/xbox-live/get-started/setup-ide/managed-partners/vs-xbox/use-xbox-live-nuget-with-xdk",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/userstats/uri-batch.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/userstats/uri-batch",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/get-started-with-partner/using-xbox-live-apis-built-into-the-xdk.md",
- "redirect_url": "/gaming/xbox-live/get-started/setup-ide/managed-partners/vs-xbox/using-xbox-live-apis-built-into-the-xdk",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/userstats/uri-batchpost.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/userstats/uri-batchpost",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/get-started-with-partner/where-to-get-xdk.md",
- "redirect_url": "/gaming/xbox-live/get-started/setup-ide/managed-partners/vs-xbox/where-to-get-xdk",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/userstats/uri-usersxuidscidsscidstats.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/userstats/uri-usersxuidscidsscidstats",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/get-started-with-partner/xdk-developers.md",
- "redirect_url": "/gaming/xbox-live/get-started/setup-ide/managed-partners/vs-xbox/mp-vs-xbox_nav",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/userstats/uri-usersxuidscidsscidstatsget.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/userstats/uri-usersxuidscidsscidstatsget",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/leaderboards-and-stats-2017/leaderboards.md",
- "redirect_url": "/gaming/xbox-live/leaderboards-and-stats-2017/leaderboards",
+ "source_path": "uwp/xbox-live/xbox-live-rest/uri/userstats/uri-usersxuidscidsscidstatsgetvaluemetadata.md",
+ "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/userstats/uri-usersxuidscidsscidstatsgetvaluemetadata",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/leaderboards-and-stats-2017/player-stats-configure-2017.md",
- "redirect_url": "/gaming/xbox-live/leaderboards-and-stats-2017/player-stats-configure-2017",
+ "source_path": "uwp/composition/visual-layer-in-desktop-apps.md",
+ "redirect_url": "/windows/apps/desktop/modernize/visual-layer-in-desktop-apps",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/leaderboards-and-stats-2017/player-stats-updating.md",
- "redirect_url": "/gaming/xbox-live/leaderboards-and-stats-2017/player-stats-updating",
+ "source_path": "uwp/composition/using-the-visual-layer-with-wpf.md",
+ "redirect_url": "/windows/apps/desktop/modernize/using-the-visual-layer-with-wpf",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/leaderboards-and-stats-2017/player-stats.md",
- "redirect_url": "/gaming/xbox-live/data-platform/player-data_nav",
+ "source_path": "uwp/composition/using-the-visual-layer-with-windows-forms.md",
+ "redirect_url": "/windows/apps/desktop/modernize/using-the-visual-layer-with-windows-forms",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/leaderboards-and-stats-2017/stats2017.md",
- "redirect_url": "/gaming/xbox-live/leaderboards-and-stats-2017/stats2017",
+ "source_path": "uwp/composition/using-the-visual-layer-with-win32.md",
+ "redirect_url": "/windows/apps/desktop/modernize/using-the-visual-layer-with-win32",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/multiplayer/multiplayer-concepts.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-concepts",
+ "source_path": "uwp/xaml-platform/xaml-host-controls.md",
+ "redirect_url": "/windows/apps/desktop/modernize/xaml-islands",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/multiplayer/multiplayer-intro.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-intro",
+ "source_path": "uwp/xaml-platform/using-the-xaml-hosting-api.md",
+ "redirect_url": "/windows/apps/desktop/modernize/using-the-xaml-hosting-api",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/multiplayer/multiplayer-manager.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-platform",
- "redirect_document_id": false
+ "source_path": "hub/apps/desktop/modernize/advanced-scenarios-xaml-islands-cpp.md",
+ "redirect_url": "/windows/apps/desktop/modernize/xaml-islands/advanced-scenarios-xaml-islands-cpp",
+ "redirect_document_id": true
},
{
- "source_path": "uwp/xbox-live/multiplayer/multiplayer-roles.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-roles",
- "redirect_document_id": false
+ "source_path": "hub/apps/desktop/modernize/host-custom-control-with-xaml-islands-cpp.md",
+ "redirect_url": "/windows/apps/desktop/modernize/xaml-islands/host-custom-control-with-xaml-islands-cpp",
+ "redirect_document_id": true
},
{
- "source_path": "uwp/xbox-live/multiplayer/multiplayer-scenarios.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-scenarios",
- "redirect_document_id": false
+ "source_path": "hub/apps/desktop/modernize/host-custom-control-with-xaml-islands.md",
+ "redirect_url": "/windows/apps/desktop/modernize/xaml-islands/host-custom-control-with-xaml-islands",
+ "redirect_document_id": true
},
{
- "source_path": "uwp/xbox-live/multiplayer/session-browse.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/session-browse",
- "redirect_document_id": false
+ "source_path": "hub/apps/desktop/modernize/host-standard-control-with-xaml-islands-cpp.md",
+ "redirect_url": "/windows/apps/desktop/modernize/xaml-islands/host-standard-control-with-xaml-islands-cpp",
+ "redirect_document_id": true
},
{
- "source_path": "uwp/xbox-live/multiplayer/xbox-integrated-multiplayer.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/xbox-integrated-multiplayer/xbox-integrated-multiplayer",
- "redirect_document_id": false
+ "source_path": "hub/apps/desktop/modernize/host-standard-control-with-xaml-islands.md",
+ "redirect_url": "/windows/apps/desktop/modernize/xaml-islands/host-standard-control-with-xaml-islands",
+ "redirect_document_id": true
},
{
- "source_path": "uwp/xbox-live/multiplayer/arena/arena-apis-metadata.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/arena/arena-apis-metadata",
- "redirect_document_id": false
+ "source_path": "hub/apps/desktop/modernize/using-the-xaml-hosting-api.md",
+ "redirect_url": "/windows/apps/desktop/modernize/xaml-islands/using-the-xaml-hosting-api",
+ "redirect_document_id": true
},
{
- "source_path": "uwp/xbox-live/multiplayer/arena/arena-notifications.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/arena/arena-notifications",
- "redirect_document_id": false
+ "source_path": "hub/apps/desktop/modernize/xaml-islands.md",
+ "redirect_url": "/windows/apps/desktop/modernize/xaml-islands/xaml-islands",
+ "redirect_document_id": true
},
{
- "source_path": "uwp/xbox-live/multiplayer/arena/arena-title-integration.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/arena/arena-title-integration",
- "redirect_document_id": false
+ "source_path": "hub/apps/desktop/modernize/apply-mica-win32.md",
+ "redirect_url": "/windows/apps/desktop/modernize/ui/apply-mica-win32",
+ "redirect_document_id": true
},
{
- "source_path": "uwp/xbox-live/multiplayer/arena/arena-user-scenarios.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/arena/arena-user-scenarios",
- "redirect_document_id": false
+ "source_path": "hub/apps/desktop/modernize/apply-rounded-corners.md",
+ "redirect_url": "/windows/apps/desktop/modernize/ui/apply-rounded-corners",
+ "redirect_document_id": true
},
{
- "source_path": "uwp/xbox-live/multiplayer/arena/arena-ux-join-tournament.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/arena/arena-ux-join-tournament",
- "redirect_document_id": false
+ "source_path": "hub/apps/desktop/modernize/apply-snap-layout-menu.md",
+ "redirect_url": "/windows/apps/desktop/modernize/ui/apply-snap-layout-menu",
+ "redirect_document_id": true
},
{
- "source_path": "uwp/xbox-live/multiplayer/arena/arena-ux-match-engagement.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/arena/arena-ux-match-engagement",
- "redirect_document_id": false
+ "source_path": "hub/apps/desktop/modernize/apply-windows-themes.md",
+ "redirect_url": "/windows/apps/desktop/modernize/ui/apply-windows-themes",
+ "redirect_document_id": true
},
{
- "source_path": "uwp/xbox-live/multiplayer/arena/discovering-xbox-tournaments.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/arena/discovering-xbox-tournaments",
- "redirect_document_id": false
+ "source_path": "hub/apps/desktop/modernize/using-the-visual-layer-with-win32.md",
+ "redirect_url": "/windows/apps/desktop/modernize/ui/using-the-visual-layer-with-win32",
+ "redirect_document_id": true
},
{
- "source_path": "uwp/xbox-live/multiplayer/arena/operations-portal.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/arena/operations-portal",
- "redirect_document_id": false
+ "source_path": "hub/apps/desktop/modernize/using-the-visual-layer-with-windows-forms.md",
+ "redirect_url": "/windows/apps/desktop/modernize/ui/using-the-visual-layer-with-windows-forms",
+ "redirect_document_id": true
},
{
- "source_path": "uwp/xbox-live/multiplayer/arena/xbox-arena.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/arena/xbox-arena",
- "redirect_document_id": false
+ "source_path": "hub/apps/desktop/modernize/using-the-visual-layer-with-wpf.md",
+ "redirect_url": "/windows/apps/desktop/modernize/ui/using-the-visual-layer-with-wpf",
+ "redirect_document_id": true
},
{
- "source_path": "uwp/xbox-live/multiplayer/chat/game-chat-2-migration.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/chat/game-chat-2-migration",
- "redirect_document_id": false
+ "source_path": "hub/apps/desktop/modernize/visual-layer-in-desktop-apps.md",
+ "redirect_url": "/windows/apps/desktop/modernize/ui/visual-layer-in-desktop-apps",
+ "redirect_document_id": true
},
{
- "source_path": "uwp/xbox-live/multiplayer/chat/game-chat-2-overview.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/chat/game-chat-2-overview",
+ "source_path": "uwp/porting/desktop-to-uwp-root.md",
+ "redirect_url": "/windows/msix/desktop/desktop-to-uwp-root",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/multiplayer/chat/real-time-audio-manipulation.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/chat/real-time-audio-manipulation",
+ "source_path": "uwp/porting/desktop-to-uwp-prepare.md",
+ "redirect_url": "/windows/msix/desktop/desktop-to-uwp-prepare",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/multiplayer/chat/using-game-chat-2-winrt.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/chat/using-game-chat-2-winrt",
+ "source_path": "uwp/porting/desktop-to-uwp-packaging-dot-net.md",
+ "redirect_url": "/windows/msix/desktop/desktop-to-uwp-packaging-dot-net",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/multiplayer/chat/using-game-chat-2.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/chat/using-game-chat-2",
+ "source_path": "uwp/porting/desktop-to-uwp-run-desktop-app-converter.md",
+ "redirect_url": "/windows/msix/desktop/desktop-to-uwp-run-desktop-app-converter",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/multiplayer/multiplayer-appendix/common-issues-when-adapting-multiplayer.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-appendix/common-issues-when-adapting-multiplayer",
+ "source_path": "uwp/porting/desktop-to-uwp-manual-conversion.md",
+ "redirect_url": "/windows/msix/desktop/desktop-to-uwp-manual-conversion",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/multiplayer/multiplayer-appendix/flows-for-multiplayer-game-invites.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/invite/multiplayer-invite-flows",
+ "source_path": "uwp/porting/desktop-to-uwp-r2r.md",
+ "redirect_url": "/windows/msix/desktop/desktop-to-uwp-r2r",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/multiplayer/multiplayer-appendix/game-session-and-game-party-visibility-and-joinability.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-appendix/game-session-and-game-party-visibility-and-joinability",
+ "source_path": "uwp/porting/desktop-to-uwp-behind-the-scenes.md",
+ "redirect_url": "/windows/msix/desktop/desktop-to-uwp-behind-the-scenes",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/multiplayer/multiplayer-appendix/introduction-to-the-multiplayer-system.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-appendix/introduction-to-the-multiplayer-system",
+ "source_path": "uwp/porting/desktop-to-uwp-known-issues.md",
+ "redirect_url": "/windows/msix/desktop/desktop-to-uwp-known-issues",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/multiplayer/multiplayer-appendix/migrating-an-arbiter.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-appendix/migrating-an-arbiter",
+ "source_path": "uwp/porting/package-support-framework.md",
+ "redirect_url": "/windows/msix/psf/package-support-framework",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/multiplayer/multiplayer-appendix/mpsd-session-details.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-session/mpsd-details",
+ "source_path": "uwp/porting/desktop-to-uwp-debug.md",
+ "redirect_url": "/windows/msix/desktop/desktop-to-uwp-debug",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/multiplayer/multiplayer-appendix/multiplayer-2015-faq.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-appendix/multiplayer-2015-faq",
+ "source_path": "uwp/porting/desktop-to-uwp-test-windows-s.md",
+ "redirect_url": "/windows/msix/desktop/desktop-to-uwp-test-windows-s",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/multiplayer/multiplayer-appendix/multiplayer-appendix.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-appendix/multiplayer-appendix",
+ "source_path": "uwp/porting/desktop-to-uwp-distribute.md",
+ "redirect_url": "/windows/apps/desktop/modernize/desktop-to-uwp-distribute",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/multiplayer/multiplayer-appendix/multiplayer-how-tos.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-session/mpsd-how-tos",
+ "source_path": "uwp/porting/desktop-to-uwp-enhance.md",
+ "redirect_url": "/windows/apps/desktop/modernize/desktop-to-uwp-enhance",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/multiplayer/multiplayer-appendix/multiplayer-session-directory.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-appendix/xbox-one-multiplayer-session-directory",
+ "source_path": "uwp/porting/desktop-to-uwp-extend.md",
+ "redirect_url": "/windows/apps/desktop/modernize/desktop-to-uwp-extend",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/multiplayer/multiplayer-appendix/multiplayer-session-status-codes.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-session/mpsd-status-codes",
+ "source_path": "uwp/porting/desktop-to-uwp-extensions.md",
+ "redirect_url": "/windows/apps/desktop/modernize/desktop-to-uwp-extensions",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/multiplayer/multiplayer-appendix/smartmatch-matchmaking.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-manager/mpm-flowcharts/mpm-play-with-smartmatch-matchmaking",
+ "source_path": "uwp/porting/desktop-to-uwp-supported-api.md",
+ "redirect_url": "/windows/apps/desktop/modernize/desktop-to-uwp-supported-api",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/multiplayer/multiplayer-appendix/using-smartmatch-matchmaking.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/matchmaking/matchmaking",
+ "source_path": "uwp/design/fluent-design-system/index.md",
+ "redirect_url": "/windows/apps/fluent-design-system",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/multiplayer/multiplayer-appendix/xbox-one-multiplayer-session-directory.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-appendix/xbox-one-multiplayer-session-directory",
+ "source_path": "uwp/packaging/packaging-uwp-apps.md",
+ "redirect_url": "/windows/msix/package/packaging-uwp-apps",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/multiplayer/multiplayer-manager/handle-protocol-activation.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-manager/handle-protocol-activation",
+ "source_path": "uwp/packaging/manual-packaging-root.md",
+ "redirect_url": "/windows/msix/package/manual-packaging-root",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/multiplayer/multiplayer-manager/mpm-flowcharts.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-manager/mpm-flowcharts",
+ "source_path": "uwp/packaging/create-app-package-with-makeappx-tool.md",
+ "redirect_url": "/windows/msix/package/create-app-package-with-makeappx-tool",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/multiplayer/multiplayer-manager/multiplayer-manager-api-overview.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-manager/multiplayer-manager-api-overview",
+ "source_path": "uwp/packaging/create-certificate-package-signing.md",
+ "redirect_url": "/windows/msix/package/create-certificate-package-signing",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/multiplayer/multiplayer-manager/play-multiplayer-with-friends.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-manager/play-multiplayer-with-friends",
+ "source_path": "uwp/packaging/sign-app-package-using-signtool.md",
+ "redirect_url": "/windows/msix/package/sign-app-package-using-signtool",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/multiplayer/multiplayer-manager/play-multiplayer-with-matchmaking.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-manager/play-multiplayer-with-matchmaking",
+ "source_path": "uwp/packaging/package-folding.md",
+ "redirect_url": "/windows/msix/package/package-folding",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/multiplayer/multiplayer-manager/send-game-invites.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-manager/send-game-invites",
+ "source_path": "uwp/packaging/flat-bundles.md",
+ "redirect_url": "/windows/msix/package/flat-bundles",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/multiplayer/multiplayer-manager/mpm-flowcharts/mpm-fill-open-slots.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-manager/mpm-flowcharts/mpm-fill-open-slots",
+ "source_path": "uwp/packaging/asset-packages.md",
+ "redirect_url": "/windows/msix/package/asset-packages",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/multiplayer/multiplayer-manager/mpm-flowcharts/mpm-host-migration.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-manager/mpm-flowcharts/mpm-host-migration",
+ "source_path": "uwp/packaging/packaging-layout.md",
+ "redirect_url": "/windows/msix/package/packaging-layout",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/multiplayer/multiplayer-manager/mpm-flowcharts/mpm-on-protocol-activation.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-manager/mpm-flowcharts/mpm-on-protocol-activation",
+ "source_path": "uwp/packaging/device-architecture.md",
+ "redirect_url": "/windows/msix/package/device-architecture",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/multiplayer/multiplayer-manager/mpm-flowcharts/mpm-play-with-friends.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-manager/mpm-flowcharts/mpm-play-with-friends",
+ "source_path": "uwp/packaging/streaming-install.md",
+ "redirect_url": "/windows/msix/package/streaming-install",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/multiplayer/multiplayer-manager/mpm-flowcharts/mpm-play-with-smartmatch-matchmaking.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-manager/mpm-flowcharts/mpm-play-with-smartmatch-matchmaking",
+ "source_path": "uwp/packaging/create-cgm.md",
+ "redirect_url": "/windows/msix/package/create-cgm",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/multiplayer/multiplayer-manager/mpm-flowcharts/mpm-send-invites.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-manager/mpm-flowcharts/mpm-send-invites",
+ "source_path": "uwp/packaging/optional-packages.md",
+ "redirect_url": "/windows/msix/package/optional-packages",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/multiplayer/multiplayer-manager/mpm-flowcharts/mpm-shut-down.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-manager/mpm-flowcharts/mpm-shut-down",
+ "source_path": "uwp/packaging/optional-packages-with-executable-code.md",
+ "redirect_url": "/windows/msix/package/optional-packages-with-executable-code",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/multiplayer/multiplayer-manager/mpm-flowcharts/mpm-use-matchmaking-and-qos.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/multiplayer-manager/mpm-flowcharts/mpm-use-matchmaking-and-qos",
+ "source_path": "hub/python/get-started/python-for-education.md",
+ "redirect_url": "/windows/python/beginners",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/multiplayer/service-configuration/configure-the-multiplayer-service.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/service-configuration/configure-the-multiplayer-service",
+ "source_path": "hub/python/get-started/python-for-web.md",
+ "redirect_url": "/windows/python/web-frameworks",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/multiplayer/service-configuration/configure-your-appxmanifest-for-multiplayer.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/xbox-integrated-multiplayer/xim-manifest",
+ "source_path": "hub/python/get-started/python-for-scripting.md",
+ "redirect_url": "/windows/python/scripting",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/multiplayer/service-configuration/large-sessions.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/service-configuration/large-sessions",
+ "source_path": "hub/mac-to-windows.md",
+ "redirect_url": "/windows/dev-environment/mac-to-windows",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/multiplayer/service-configuration/session-template-constants.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/service-configuration/session-template-constants",
+ "source_path": "uwp/design/layout/content-as-objects.md",
+ "redirect_url": "/windows/uwp/design",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/multiplayer/service-configuration/session-templates.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/service-configuration/session-templates",
+ "source_path": "uwp/monetize/get-xbox-one-game-acquisitions.md",
+ "redirect_url": "/windows/uwp/monetize",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/multiplayer/xbox-integrated-multiplayer/using-xim-cs.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/xbox-integrated-multiplayer/using-xim-cs",
+ "source_path": "uwp/monetize/get-xbox-one-add-on-acquisitions.md",
+ "redirect_url": "/windows/uwp/monetize",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/multiplayer/xbox-integrated-multiplayer/using-xim.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/xbox-integrated-multiplayer/using-xim",
+ "source_path": "uwp/monetize/get-error-reporting-data-for-your-xbox-one-game.md",
+ "redirect_url": "/windows/uwp/monetize",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/multiplayer/xbox-integrated-multiplayer/xim-manifest.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/xbox-integrated-multiplayer/xim-manifest",
+ "source_path": "uwp/monetize/get-details-for-an-error-in-your-xbox-one-game.md",
+ "redirect_url": "/windows/uwp/monetize",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/multiplayer/xbox-integrated-multiplayer/xim-release-notes.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/xbox-integrated-multiplayer/xim-release-notes",
+ "source_path": "uwp/monetize/get-the-stack-trace-for-an-error-in-your-xbox-one-game.md",
+ "redirect_url": "/windows/uwp/monetize",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/multiplayer/xbox-integrated-multiplayer/xim-reservations.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/xbox-integrated-multiplayer/xim-reservations",
+ "source_path": "uwp/monetize/download-the-cab-file-for-an-error-in-your-xbox-one-game.md",
+ "redirect_url": "/windows/uwp/monetize",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/multiplayer/xbox-integrated-multiplayer/xim-unity-uwp-il2cpp.md",
- "redirect_url": "/gaming/xbox-live/multiplayer/xbox-integrated-multiplayer/xim-unity-uwp-il2cpp",
+ "source_path": "uwp/porting/apps-on-arm-limitations.md",
+ "redirect_url": "/windows/uwp/porting/apps-on-arm-troubleshooting-x86",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/real-time-activity-service/programming-the-real-time-activity-service.md",
- "redirect_url": "/gaming/xbox-live/real-time-activity-service/programming-the-real-time-activity-service",
+ "source_path": "uwp/communication/ipc.md",
+ "redirect_url": "/windows/uwp/communication/interprocess-communication",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/real-time-activity-service/real-time-activity-service.md",
- "redirect_url": "/gaming/xbox-live/real-time-activity-service/real-time-activity-service_nav",
+ "source_path": "hub/android/index.md",
+ "redirect_url": "/windows/android/overview",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/real-time-activity-service/register-for-stat-notifications.md",
- "redirect_url": "/gaming/xbox-live/real-time-activity-service/register-for-stat-notifications",
+ "source_path": "hub/python/databases.md",
+ "redirect_url": "/windows/wsl/tutorials/wsl-database",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/real-time-activity-service/rta-best-practices.md",
- "redirect_url": "/gaming/xbox-live/real-time-activity-service/rta-best-practices",
+ "source_path": "hub/nodejs/databases.md",
+ "redirect_url": "/windows/wsl/tutorials/wsl-database",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/social-platform/intro-to-social-manager.md",
- "redirect_url": "/gaming/xbox-live/social-platform/intro-to-social-manager",
+ "source_path": "uwp/monetize/app-metadata-api-for-advertising-networks.md",
+ "redirect_url": "/windows/uwp/monetize",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/social-platform/social-manager-memory-and-performance-overview.md",
- "redirect_url": "/gaming/xbox-live/social-platform/social-manager-memory-and-performance-overview",
+ "source_path": "hub/dev-environment/overview.md",
+ "redirect_url": "/windows/dev-environment/",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/social-platform/social-platform.md",
- "redirect_url": "/gaming/xbox-live/social-platform/social-platform_nav",
+ "source_path": "uwp/monetize/payment-request.md",
+ "redirect_url": "/windows/uwp/monetize",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/social-platform/people-system/displaying-people-from-the-people-system.md",
- "redirect_url": "/gaming/xbox-live/social-platform/people-system/displaying-people-from-the-people-system",
+ "source_path": "uwp/design/shell/tiles-and-notifications/toast-xml-schema.md",
+ "redirect_url": "/windows/uwp/design/shell/tiles-and-notifications/toast-schema",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/social-platform/people-system/programming-social-services.md",
- "redirect_url": "/gaming/xbox-live/social-platform/people-system/programming-social-services",
+ "source_path": "uwp/publish/create-an-ad-campaign-for-your-app.md",
+ "redirect_url": "/windows/uwp/monetize",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/social-platform/people-system/reputation.md",
- "redirect_url": "/gaming/xbox-live/social-platform/people-system/reputation_nav",
+ "source_path": "uwp/publish/managing-your-ad-campaign.md",
+ "redirect_url": "/windows/uwp/monetize",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/social-platform/people-system/sending-player-feedback-from-your-title.md",
- "redirect_url": "/gaming/xbox-live/social-platform/people-system/sending-player-feedback-from-your-title",
+ "source_path": "uwp/publish/about-house-ads.md",
+ "redirect_url": "/windows/uwp/monetize",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/social-platform/people-system/xbox-live-people-system.md",
- "redirect_url": "/gaming/xbox-live/social-platform/people-system/xbox-live-people-system",
+ "source_path": "uwp/publish/about-community-ads.md",
+ "redirect_url": "/windows/uwp/monetize",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/social-platform/rich-presence-strings/programming-rich-presence.md",
- "redirect_url": "/gaming/xbox-live/social-platform/rich-presence-strings/programming-rich-presence",
+ "source_path": "uwp/publish/common-questions.md",
+ "redirect_url": "/windows/uwp/monetize",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/social-platform/rich-presence-strings/rich-presence-strings-appendix.md",
- "redirect_url": "/gaming/xbox-live/social-platform/rich-presence-strings/rich-presence-strings-appendix",
+ "source_path": "uwp/publish/tax-details-for-paid-apps.md",
+ "redirect_url": "/partner-center/tax-details-marketplace",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/social-platform/rich-presence-strings/rich-presence-strings-best-practices.md",
- "redirect_url": "/gaming/xbox-live/social-platform/rich-presence-strings/rich-presence-strings-best-practices",
+ "source_path": "uwp/publish/getting-paid-apps.md",
+ "redirect_url": "/partner-center/marketplace-get-paid",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/social-platform/rich-presence-strings/rich-presence-strings-configuration.md",
- "redirect_url": "/gaming/xbox-live/social-platform/rich-presence-strings/rich-presence-strings-configuration",
+ "source_path": "uwp/publish/setting-up-your-payout-account-and-tax-forms.md",
+ "redirect_url": "/partner-center/set-up-your-payout-account ",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/social-platform/rich-presence-strings/rich-presence-strings-overview.md",
- "redirect_url": "/gaming/xbox-live/social-platform/rich-presence-strings/rich-presence-strings-overview",
+ "source_path": "uwp/publish/payout-summary.md",
+ "redirect_url": "/partner-center/payout-statement",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/social-platform/rich-presence-strings/rich-presence-strings-policies-and-limitations.md",
- "redirect_url": "/gaming/xbox-live/social-platform/rich-presence-strings/rich-presence-strings-policies-and-limitations",
+ "source_path": "uwp/publish/understand-irs-tax-forms.md",
+ "redirect_url": "/partner-center/understand-irs-tax-forms",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/social-platform/rich-presence-strings/rich-presence-strings-updating-strings.md",
- "redirect_url": "/gaming/xbox-live/social-platform/rich-presence-strings/rich-presence-strings-updating-strings",
+ "source_path": "uwp/publish/payment-thresholds-methods-and-timeframes.md",
+ "redirect_url": "/partner-center/payment-thresholds-methods-timeframes",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/storage-platform/storage-platform.md",
- "redirect_url": "/gaming/xbox-live/storage-platform/cloud-storage_nav",
+ "source_path": "uwp/publish/mobile-operator-billing.md",
+ "redirect_url": "/partner-center/mobile-operator-billing",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/storage-platform/connected-storage/connected-storage-best-practices.md",
- "redirect_url": "/gaming/xbox-live/storage-platform/connected-storage/connected-storage-best-practices",
+ "source_path": "uwp/publish/vat-info.md",
+ "redirect_url": "/partner-center/vat-info",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/storage-platform/connected-storage/connected-storage-deleting.md",
- "redirect_url": "/gaming/xbox-live/storage-platform/connected-storage/connected-storage-deleting",
+ "source_path": "hub/apps/whats-new/build2020-docs.md",
+ "redirect_url": "/windows/apps/whats-new/build2021-docs",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/storage-platform/connected-storage/connected-storage-loading-on-demand.md",
- "redirect_url": "/gaming/xbox-live/storage-platform/connected-storage/connected-storage-loading-on-demand",
+ "source_path": "uwp/publish/manage-account-settings-and-profile.md",
+ "redirect_url": "/partner-center/partner-center-account-setup",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/storage-platform/connected-storage/connected-storage-loading.md",
- "redirect_url": "/gaming/xbox-live/storage-platform/connected-storage/connected-storage-loading",
- "redirect_document_id": false
+ "source_path": "uwp/design/controls-and-patterns/master-details.md",
+ "redirect_url": "/windows/uwp/design/controls-and-patterns/list-details",
+ "redirect_document_id": true
},
{
- "source_path": "uwp/xbox-live/storage-platform/connected-storage/connected-storage-overview.md",
- "redirect_url": "/gaming/xbox-live/storage-platform/connected-storage/connected-storage-overview",
+ "source_path": "uwp/design/shell/tiles-and-notifications/send-local-toast-desktop.md",
+ "redirect_url": "/windows/uwp/design/shell/tiles-and-notifications/send-local-toast",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/storage-platform/connected-storage/connected-storage-saving.md",
- "redirect_url": "/gaming/xbox-live/storage-platform/connected-storage/connected-storage-saving",
+ "source_path": "hub/nodejs/index.yml",
+ "redirect_url": "/windows/dev-environment/javascript",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/storage-platform/connected-storage/connected-storage-technical-overview.md",
- "redirect_url": "/gaming/xbox-live/storage-platform/connected-storage/connected-storage-technical-overview",
+ "source_path": "hub/nodejs/beginners.md",
+ "redirect_url": "/windows/dev-environment/javascript/nodejs-beginners-tutorial",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/storage-platform/connected-storage/connected-storage-using-buffers.md",
- "redirect_url": "/gaming/xbox-live/storage-platform/connected-storage/connected-storage-using-buffers",
+ "source_path": "hub/nodejs/setup-on-wsl2.md",
+ "redirect_url": "/windows/dev-environment/javascript/nodejs-on-wsl",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/storage-platform/connected-storage/connected-storage-xb-storage.md",
- "redirect_url": "/gaming/xbox-live/storage-platform/connected-storage/connected-storage-xb-storage",
+ "source_path": "hub/nodejs/setup-on-windows.md",
+ "redirect_url": "/windows/dev-environment/javascript/nodejs-on-windows",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/storage-platform/xbox-live-title-storage/reading-binary-blobs.md",
- "redirect_url": "/gaming/xbox-live/storage-platform/xbox-live-title-storage/reading-binary-blobs",
+ "source_path": "hub/nodejs/containers.md",
+ "redirect_url": "/windows/wsl/tutorials/wsl-containers",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/storage-platform/xbox-live-title-storage/reading-configuration-blobs.md",
- "redirect_url": "/gaming/xbox-live/storage-platform/xbox-live-title-storage/reading-configuration-blobs",
+ "source_path": "hub/nodejs/web-frameworks.md",
+ "redirect_url": "/windows/dev-environment/javascript",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/storage-platform/xbox-live-title-storage/reading-jsonblobs.md",
- "redirect_url": "/gaming/xbox-live/storage-platform/xbox-live-title-storage/reading-jsonblobs",
+ "source_path": "hub/android/react-native.md",
+ "redirect_url": "/windows/dev-environment/javascript/react-native-for-android",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/storage-platform/xbox-live-title-storage/storing-binary-blobs.md",
- "redirect_url": "/gaming/xbox-live/storage-platform/xbox-live-title-storage/storing-binary-blobs",
+ "source_path": "hub/apps/features-and-technologies.md",
+ "redirect_url": "/windows/apps/develop/index",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/storage-platform/xbox-live-title-storage/storing-jsonblobs.md",
- "redirect_url": "/gaming/xbox-live/storage-platform/xbox-live-title-storage/storing-jsonblobs",
+ "source_path": "hub/apps/develop/features-and-technologies.md",
+ "redirect_url": "/windows/apps/develop/index",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/storage-platform/xbox-live-title-storage/xbox-live-title-storage.md",
- "redirect_url": "/gaming/xbox-live/storage-platform/xbox-live-title-storage/xbox-live-title-storage",
- "redirect_document_id": false
+ "source_path": "hub/apps/speech.md",
+ "redirect_url": "/windows/apps/develop/speech",
+ "redirect_document_id": true
},
{
- "source_path": "uwp/xbox-live/tools/analyze-service-calls.md",
- "redirect_url": "/gaming/xbox-live/tools/analyze-service-calls",
- "redirect_document_id": false
+ "source_path": "hub/apps/accessibility.md",
+ "redirect_url": "/windows/apps/develop/accessibility",
+ "redirect_document_id": true
},
{
- "source_path": "uwp/xbox-live/tools/tools.md",
- "redirect_url": "/gaming/xbox-live/tools/tools",
+ "source_path": "hub/apps/windows-app-sdk/older-downloads.md",
+ "redirect_url": "/windows/apps/windows-app-sdk/downloads-archive",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/tools/xbox-live-account-tool.md",
- "redirect_url": "/gaming/xbox-live/tools/xbox-live-account-tool",
+ "source_path": "uwp/get-started/get-set-up.md",
+ "redirect_url": "/windows/uwp/get-started/winui2/getting-started",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/using-xbox-live/porting-xbox-live-code-from-xdk-to-uwp.md",
- "redirect_url": "/gaming/xbox-live/using-xbox-live/porting-xbox-live-code-from-xdk-to-uwp",
+ "source_path": "hub/apps/get-started/get-set-up.md",
+ "redirect_url": "/windows/apps/get-started/start-here",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/using-xbox-live/using-xbox-live.md",
- "redirect_url": "/gaming/xbox-live/using-xbox-live/using-xbox-live",
+ "source_path": "hub/apps/project-reunion/index.md",
+ "redirect_url": "/windows/apps/windows-app-sdk/index",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/using-xbox-live/auth/authentication-for-UWP-projects.md",
- "redirect_url": "/gaming/xbox-live/using-xbox-live/auth/authentication-for-UWP-projects",
+ "source_path": "hub/apps/project-reunion/release-channels.md",
+ "redirect_url": "/windows/apps/windows-app-sdk/release-channels",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/using-xbox-live/auth/authentication-for-XDK-projects.md",
- "redirect_url": "/gaming/xbox-live/using-xbox-live/auth/authentication-for-XDK-projects",
+ "source_path": "hub/apps/project-reunion/stable-channel.md",
+ "redirect_url": "/windows/apps/windows-app-sdk/stable-channel",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/using-xbox-live/auth/authentication.md",
- "redirect_url": "/gaming/xbox-live/using-xbox-live/auth/authentication_nav",
+ "source_path": "hub/apps/project-reunion/preview-channel.md",
+ "redirect_url": "/windows/apps/windows-app-sdk/preview-channel",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/using-xbox-live/auth/retrieving-windows-system-user-on-UWP.md",
- "redirect_url": "/gaming/xbox-live/using-xbox-live/auth/retrieving-windows-system-user-on-UWP",
+ "source_path": "hub/apps/project-reunion/set-up-your-development-environment.md",
+ "redirect_url": "/windows/apps/get-started/start-here",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/using-xbox-live/auth/single-point-of-presence.md",
- "redirect_url": "/gaming/xbox-live/using-xbox-live/auth/single-point-of-presence",
+ "source_path": "hub/apps/project-reunion/get-started-with-project-reunion.md",
+ "redirect_url": "/windows/apps/windows-app-sdk",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/using-xbox-live/best-practices/best-practices-for-calling-xbox-live.md",
- "redirect_url": "/gaming/xbox-live/using-xbox-live/best-practices/best-practices-for-calling-xbox-live",
+ "source_path": "hub/apps/project-reunion/get-started.md",
+ "redirect_url": "/windows/apps/windows-app-sdk",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/using-xbox-live/best-practices/best-practices-for-offline.md",
- "redirect_url": "/gaming/xbox-live/using-xbox-live/best-practices/best-practices-for-offline",
+ "source_path": "hub/apps/windows-app-sdk/get-started.md",
+ "redirect_url": "/windows/apps/windows-app-sdk",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/using-xbox-live/best-practices/fine-grained-rate-limiting.md",
- "redirect_url": "/gaming/xbox-live/using-xbox-live/best-practices/fine-grained-rate-limiting",
+ "source_path": "hub/apps/project-reunion/update-existing-projects-to-the-latest-release.md",
+ "redirect_url": "/windows/apps/windows-app-sdk/update-existing-projects-to-the-latest-release",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/using-xbox-live/error-handling/error-handling-cpp.md",
- "redirect_url": "/gaming/xbox-live/using-xbox-live/error-handling/error-handling-cpp",
+ "source_path": "hub/apps/project-reunion/mrtcore/mrtcore-overview.md",
+ "redirect_url": "/windows/apps/windows-app-sdk/mrtcore/mrtcore-overview",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/using-xbox-live/error-handling/error-handling-winrt.md",
- "redirect_url": "/gaming/xbox-live/using-xbox-live/error-handling/error-handling-winrt",
+ "source_path": "hub/apps/project-reunion/dwritecore.md",
+ "redirect_url": "/windows/apps/windows-app-sdk/dwritecore",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/using-xbox-live/error-handling/error-handling.md",
- "redirect_url": "/gaming/xbox-live/using-xbox-live/error-handling/error-handling_nav",
+ "source_path": "hub/apps/project-reunion/applifecycle/applifecycle-instancing.md",
+ "redirect_url": "/windows/apps/windows-app-sdk/applifecycle/applifecycle-instancing",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/using-xbox-live/troubleshooting/how-to-set-up-fiddler-for-debugging.md",
- "redirect_url": "/gaming/xbox-live/using-xbox-live/troubleshooting/how-to-set-up-fiddler-for-debugging",
+ "source_path": "hub/apps/project-reunion/applifecycle/applifecycle-rich-activation.md",
+ "redirect_url": "/windows/apps/windows-app-sdk/applifecycle/applifecycle-rich-activation",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/using-xbox-live/troubleshooting/troubleshooting-pc-setup.md",
- "redirect_url": "/gaming/xbox-live/using-xbox-live/troubleshooting/troubleshooting-pc-setup",
+ "source_path": "hub/apps/project-reunion/deploy-apps-that-use-project-reunion.md",
+ "redirect_url": "/windows/apps/windows-app-sdk/deploy-apps-that-use-the-windows-app-sdk",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/using-xbox-live/troubleshooting/troubleshooting-sign-in.md",
- "redirect_url": "/gaming/xbox-live/using-xbox-live/troubleshooting/troubleshooting-sign-in",
+ "source_path": "hub/apps/project-reunion/deployment-architecture.md",
+ "redirect_url": "/windows/apps/windows-app-sdk/deployment-architecture",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/using-xbox-live/troubleshooting/troubleshooting-the-xbox-live-services-api.md",
- "redirect_url": "/gaming/xbox-live/using-xbox-live/troubleshooting/troubleshooting-the-xbox-live-services-api",
+ "source_path": "hub/apps/project-reunion/deploy-packaged-apps.md",
+ "redirect_url": "/windows/apps/windows-app-sdk/deploy-packaged-apps",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/using-xbox-live/troubleshooting/troubleshooting.md",
- "redirect_url": "/gaming/xbox-live/using-xbox-live/troubleshooting/troubleshooting_nav",
+ "source_path": "hub/apps/project-reunion/deploy-unpackaged-apps.md",
+ "redirect_url": "/windows/apps/windows-app-sdk/deploy-unpackaged-apps",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/whats-new/1506-whats-new.md",
- "redirect_url": "/gaming/xbox-live/whats-new/1506-whats-new",
+ "source_path": "hub/apps/project-reunion/tutorial-unpackaged-deployment.md",
+ "redirect_url": "/windows/apps/windows-app-sdk/tutorial-unpackaged-deployment",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/whats-new/1508-whats-new.md",
- "redirect_url": "/gaming/xbox-live/whats-new/1508-whats-new",
+ "source_path": "hub/apps/project-reunion/check-project-reunion-versions.md",
+ "redirect_url": "/windows/apps/windows-app-sdk/check-windows-app-sdk-versions",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/whats-new/1509-whats-new.md",
- "redirect_url": "/gaming/xbox-live/whats-new/1509-whats-new",
+ "source_path": "hub/apps/project-reunion/remove-project-reunion-versions.md",
+ "redirect_url": "/windows/apps/windows-app-sdk/remove-windows-app-sdk-versions",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/whats-new/1510-whats-new.md",
- "redirect_url": "/gaming/xbox-live/whats-new/1510-whats-new",
+ "source_path": "hub/apps/winui/reference/iwindownative.md",
+ "redirect_url": "/windows/windows-app-sdk/api/win32/microsoft.ui.xaml.window/nn-microsoft-ui-xaml-window-iwindownative",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/whats-new/1602-whats-new.md",
- "redirect_url": "/gaming/xbox-live/whats-new/1602-whats-new",
+ "source_path": "hub/apps/winui/reference/iwindownative-windowhandle.md",
+ "redirect_url": "/windows/windows-app-sdk/api/win32/microsoft.ui.xaml.window/nf-microsoft-ui-xaml-window-iwindownative-get_windowhandle",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/whats-new/1603-whats-new.md",
- "redirect_url": "/gaming/xbox-live/whats-new/1603-whats-new",
+ "source_path": "hub/apps/windows-app-sdk/samples.md",
+ "redirect_url": "/windows/apps/get-started/samples",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/whats-new/1604-whats-new.md",
- "redirect_url": "/gaming/xbox-live/whats-new/1604-whats-new",
- "redirect_document_id": false
+ "source_path": "hub/apps/windows-app-sdk/preview-experimental-install.md",
+ "redirect_url": "/windows/apps/get-started/start-here",
+ "redirect_document_id": true
},
{
- "source_path": "uwp/xbox-live/whats-new/1606-whats-new.md",
- "redirect_url": "/gaming/xbox-live/whats-new/1606-whats-new",
+ "source_path": "hub/apps/get-started/build-apps-for-windows.md",
+ "redirect_url": "/windows/apps/winui/winui3/create-your-first-winui3-app",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/whats-new/1608-whats-new.md",
- "redirect_url": "/gaming/xbox-live/whats-new/1608-whats-new",
+ "source_path": "hub/apps/winui/winui3-winui2-comparison.md",
+ "redirect_url": "/windows/apps/winui/",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/whats-new/1611-whats-new.md",
- "redirect_url": "/gaming/xbox-live/whats-new/1611-whats-new",
+ "source_path": "hub/apps/winui/winui3/desktop-build-basic-winui3-app.md",
+ "redirect_url": "/windows/apps/winui/winui3/desktop-winui3-app-with-basic-interop",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/whats-new/1612-whats-new.md",
- "redirect_url": "/gaming/xbox-live/whats-new/1612-whats-new",
+ "source_path": "hub/apps/winui/winui3/release-notes/index.md",
+ "redirect_url": "/windows/apps/winui/winui3/release-notes/release-notes-08-preview",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/whats-new/1703-whats-new.md",
- "redirect_url": "/gaming/xbox-live/whats-new/1703-whats-new",
+ "source_path": "hub/apps/winui/winui3/get-started-winui3-for-desktop.md",
+ "redirect_url": "/windows/apps/winui/winui3/create-your-first-winui3-app",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/whats-new/1704-whats-new.md",
- "redirect_url": "/gaming/xbox-live/whats-new/1704-whats-new",
+ "source_path": "hub/apps/winui/winui3/get-started-winui3-for-uwp.md",
+ "redirect_url": "/windows/apps/winui/winui3/create-your-first-winui3-app",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/whats-new/1705-whats-new.md",
- "redirect_url": "/gaming/xbox-live/whats-new/1705-whats-new",
+ "source_path": "hub/apps/winui/winui2/winui-2.6.md",
+ "redirect_url": "/windows/apps/winui/winui2/release-notes/winui-2.6",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/whats-new/1706-whats-new.md",
- "redirect_url": "/gaming/xbox-live/whats-new/1706-whats-new",
+ "source_path": "hub/apps/winui/winui3/cs-interop-apis/index.md",
+ "redirect_url": "/windows/apps/api-reference/cs-interop-apis/",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/whats-new/1707-whats-new.md",
- "redirect_url": "/gaming/xbox-live/whats-new/1707-whats-new",
+ "source_path": "hub/apps/winui/winui3/cs-interop-apis/microsoft.ui/microsoft.ui.md",
+ "redirect_url": "/windows/apps/api-reference/cs-interop-apis/microsoft.ui/microsoft.ui",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/whats-new/1708-whats-new.md",
- "redirect_url": "/gaming/xbox-live/whats-new/1708-whats-new",
+ "source_path": "hub/apps/winui/winui3/cs-interop-apis/microsoft.ui/microsoft.ui.win32interop.getdisplayidfrommonitor.md",
+ "redirect_url": "/windows/apps/api-reference/cs-interop-apis/microsoft.ui/microsoft.ui.win32interop.getdisplayidfrommonitor",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/whats-new/whats-new.md",
- "redirect_url": "/gaming/xbox-live/whats-new/whats-new",
+ "source_path": "hub/apps/winui/winui3/cs-interop-apis/microsoft.ui/microsoft.ui.win32interop.geticonfromiconid.md",
+ "redirect_url": "/windows/apps/api-reference/cs-interop-apis/microsoft.ui/microsoft.ui.win32interop.geticonfromiconid",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/atoc-xboxlivews-reference.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/atoc-xboxlivews-reference",
+ "source_path": "hub/apps/winui/winui3/cs-interop-apis/microsoft.ui/microsoft.ui.win32interop.geticonidfromicon.md",
+ "redirect_url": "/windows/apps/api-reference/cs-interop-apis/microsoft.ui/microsoft.ui.win32interop.geticonidfromicon",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/additional/atoc-xboxlivews-reference-additional.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/additional/atoc-xboxlivews-reference-additional",
+ "source_path": "hub/apps/winui/winui3/cs-interop-apis/microsoft.ui/microsoft.ui.win32interop.getmonitorfromdisplayid.md",
+ "redirect_url": "/windows/apps/api-reference/cs-interop-apis/microsoft.ui/microsoft.ui.win32interop.getmonitorfromdisplayid",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/additional/authorizationtypes.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/additional/authorizationtypes",
+ "source_path": "hub/apps/winui/winui3/cs-interop-apis/microsoft.ui/microsoft.ui.win32interop.getwindowfromwindowid.md",
+ "redirect_url": "/windows/apps/api-reference/cs-interop-apis/microsoft.ui/microsoft.ui.win32interop.getwindowfromwindowid",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/additional/datatypeoverview.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/additional/datatypeoverview",
+ "source_path": "hub/apps/winui/winui3/cs-interop-apis/microsoft.ui/microsoft.ui.win32interop.getwindowidfromwindow.md",
+ "redirect_url": "/windows/apps/api-reference/cs-interop-apis/microsoft.ui/microsoft.ui.win32interop.getwindowidfromwindow",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/additional/eds-apis.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/additional/eds-apis",
+ "source_path": "hub/apps/winui/winui3/cs-interop-apis/microsoft.ui/microsoft.ui.win32interop.md",
+ "redirect_url": "/windows/apps/api-reference/cs-interop-apis/microsoft.ui/microsoft.ui.win32interop",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/additional/edsauthorization.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/additional/edsauthorization",
+ "source_path": "hub/apps/desktop/choose-your-platform.md",
+ "redirect_url": "/windows/apps/desktop#choose-your-app-type",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/additional/edscommonheaders.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/additional/edscommonheaders",
+ "source_path": "hub/apps/10x/faq.md",
+ "redirect_url": "/windows/apps",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/additional/edsparameters.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/additional/edsparameters",
+ "source_path": "uwp/design/accessibility/accessibility-checklist.md",
+ "redirect_url": "/windows/apps/design/accessibility/accessibility-checklist",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/additional/edsqueryrefiners.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/additional/edsqueryrefiners",
+ "source_path": "uwp/design/accessibility/accessibility-in-the-store.md",
+ "redirect_url": "/windows/apps/design/accessibility/accessibility-in-the-store",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/additional/edsreverselookup.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/additional/edsreverselookup",
+ "source_path": "uwp/design/accessibility/accessibility-overview.md",
+ "redirect_url": "/windows/apps/design/accessibility/accessibility-overview",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/additional/edstables.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/additional/edstables",
+ "source_path": "uwp/design/accessibility/accessibility-testing.md",
+ "redirect_url": "/windows/apps/design/accessibility/accessibility-testing",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/additional/httpstandardheaders.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/additional/httpstandardheaders",
+ "source_path": "uwp/design/accessibility/accessibility.md",
+ "redirect_url": "/windows/apps/design/accessibility/accessibility",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/additional/httpstatuscodes.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/additional/httpstatuscodes",
+ "source_path": "uwp/design/accessibility/accessible-text-requirements.md",
+ "redirect_url": "/windows/apps/design/accessibility/accessible-text-requirements",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/additional/pagingparameters.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/additional/pagingparameters",
+ "source_path": "uwp/design/accessibility/basic-accessibility-information.md",
+ "redirect_url": "/windows/apps/design/accessibility/basic-accessibility-information",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/enums/atoc-xboxlivews-reference-enums.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/enums/atoc-xboxlivews-reference-enums",
+ "source_path": "uwp/design/accessibility/control-patterns-and-interfaces.md",
+ "redirect_url": "/windows/apps/design/accessibility/control-patterns-and-interfaces",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/enums/gvr-enum-gameclipsource.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/enums/gvr-enum-gameclipsource",
+ "source_path": "uwp/design/accessibility/custom-automation-peers.md",
+ "redirect_url": "/windows/apps/design/accessibility/custom-automation-peers",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/enums/gvr-enum-gameclipstate.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/enums/gvr-enum-gameclipstate",
+ "source_path": "uwp/design/accessibility/designing-inclusive-software.md",
+ "redirect_url": "/windows/apps/design/accessibility/designing-inclusive-software",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/enums/gvr-enum-gamecliptypes.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/enums/gvr-enum-gamecliptypes",
+ "source_path": "uwp/design/accessibility/developing-inclusive-windows-apps.md",
+ "redirect_url": "/windows/apps/design/accessibility/developing-inclusive-windows-apps",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/enums/gvr-enum-gameclipuritype.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/enums/gvr-enum-gameclipuritype",
+ "source_path": "uwp/design/accessibility/high-contrast-themes.md",
+ "redirect_url": "/windows/apps/design/accessibility/high-contrast-themes",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/enums/gvr-enum-gameclipvisibility.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/enums/gvr-enum-gameclipvisibility",
+ "source_path": "uwp/design/accessibility/keyboard-accessibility.md",
+ "redirect_url": "/windows/apps/design/accessibility/keyboard-accessibility",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/enums/gvr-enum-thumbnailsource.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/enums/gvr-enum-thumbnailsource",
+ "source_path": "uwp/design/accessibility/landmarks-and-headings.md",
+ "redirect_url": "/windows/apps/design/accessibility/landmarks-and-headings",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/enums/gvr-enum-thumbnailtype.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/enums/gvr-enum-thumbnailtype",
+ "source_path": "uwp/design/accessibility/practices-to-avoid.md",
+ "redirect_url": "/windows/apps/design/accessibility/practices-to-avoid",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/enums/privacy-enum-permissionid.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/enums/privacy-enum-permissionid",
+ "source_path": "uwp/design/accessibility/system-button-narration.md",
+ "redirect_url": "/windows/apps/design/accessibility/system-button-narration",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/atoc-xboxlivews-reference-json.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/atoc-xboxlivews-reference-json",
+ "source_path": "uwp/design/app-settings/guidelines-for-app-settings.md",
+ "redirect_url": "/windows/apps/design/app-settings/guidelines-for-app-settings",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-achievementv2.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-achievementv2",
+ "source_path": "uwp/design/app-settings/store-and-retrieve-app-data.md",
+ "redirect_url": "/windows/apps/design/app-settings/store-and-retrieve-app-data",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-activityrecord.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-activityrecord",
+ "source_path": "uwp/design/basics/commanding-basics.md",
+ "redirect_url": "/windows/apps/design/basics/commanding-basics",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-activityrequest.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-activityrequest",
+ "source_path": "uwp/design/basics/content-basics.md",
+ "redirect_url": "/windows/apps/design/basics/content-basics",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-aggregatesessionsresponse.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-aggregatesessionsresponse",
+ "source_path": "uwp/design/basics/design-and-ui-intro.md",
+ "redirect_url": "/windows/apps/design/basics/design-and-ui-intro",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-batchrequest.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-batchrequest",
+ "source_path": "uwp/design/basics/index.md",
+ "redirect_url": "/windows/apps/design/basics/index",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-deviceendpoint.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-deviceendpoint",
+ "source_path": "uwp/design/basics/navigate-between-two-pages.md",
+ "redirect_url": "/windows/apps/design/basics/navigate-between-two-pages",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-devicerecord.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-devicerecord",
+ "source_path": "uwp/design/basics/navigation-basics.md",
+ "redirect_url": "/windows/apps/design/basics/navigation-basics",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-feedback.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-feedback",
+ "source_path": "uwp/design/basics/navigation-history-and-backwards-navigation.md",
+ "redirect_url": "/windows/apps/design/basics/navigation-history-and-backwards-navigation",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-gameclip.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-gameclip",
+ "source_path": "uwp/design/basics/xaml-basics-adaptive-layout.md",
+ "redirect_url": "/windows/apps/design/basics/xaml-basics-adaptive-layout",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-gameclipsserviceerrorresponse.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-gameclipsserviceerrorresponse",
+ "source_path": "uwp/design/basics/xaml-basics-style.md",
+ "redirect_url": "/windows/apps/design/basics/xaml-basics-style",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-gameclipthumbnail.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-gameclipthumbnail",
+ "source_path": "uwp/design/basics/xaml-basics-ui.md",
+ "redirect_url": "/windows/apps/design/basics/xaml-basics-ui",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-gameclipuri.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-gameclipuri",
+ "source_path": "uwp/design/controls-and-patterns/app-bars.md",
+ "redirect_url": "/windows/apps/design/controls/command-bar",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-gamemessage.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-gamemessage",
+ "source_path": "uwp/design/controls-and-patterns/auto-suggest-box.md",
+ "redirect_url": "/windows/apps/design/controls/auto-suggest-box",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-gameresult.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-gameresult",
+ "source_path": "uwp/design/controls-and-patterns/buttons.md",
+ "redirect_url": "/windows/apps/design/controls/buttons",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-gamesession.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-gamesession",
+ "source_path": "uwp/design/controls-and-patterns/calendar-date-picker.md",
+ "redirect_url": "/windows/apps/design/controls/calendar-date-picker",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-gamesessionsummary.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-gamesessionsummary",
+ "source_path": "uwp/design/controls-and-patterns/calendar-view.md",
+ "redirect_url": "/windows/apps/design/controls/calendar-view",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-getclipresponse.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-getclipresponse",
+ "source_path": "uwp/design/controls-and-patterns/checkbox.md",
+ "redirect_url": "/windows/apps/design/controls/checkbox",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-hopperstatsresults.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-hopperstatsresults",
+ "source_path": "uwp/design/controls-and-patterns/collection-commanding.md",
+ "redirect_url": "/windows/apps/design/controls/collection-commanding",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-initialuploadrequest.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-initialuploadrequest",
+ "source_path": "uwp/design/controls-and-patterns/color-picker.md",
+ "redirect_url": "/windows/apps/design/controls/color-picker",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-initialuploadresponse.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-initialuploadresponse",
+ "source_path": "uwp/design/controls-and-patterns/combo-box.md",
+ "redirect_url": "/windows/apps/design/controls/combo-box",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-inventoryitem.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-inventoryitem",
+ "source_path": "uwp/design/controls-and-patterns/command-bar-flyout.md",
+ "redirect_url": "/windows/apps/design/controls/command-bar-flyout",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-lastseenrecord.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-lastseenrecord",
+ "source_path": "uwp/design/controls-and-patterns/commanding.md",
+ "redirect_url": "/windows/apps/design/controls/commanding",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-matchticket.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-matchticket",
+ "source_path": "uwp/design/controls-and-patterns/contact-card.md",
+ "redirect_url": "/windows/apps/design/controls/contact-card",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-mediaasset.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-mediaasset",
+ "source_path": "uwp/design/controls-and-patterns/content-links.md",
+ "redirect_url": "/previous-versions/windows/uwp/ui-input/content-links",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-mediarecord.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-mediarecord",
+ "source_path": "uwp/design/controls-and-patterns/control-templates.md",
+ "redirect_url": "/windows/apps/design/style/xaml-control-templates",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-mediarequest.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-mediarequest",
+ "source_path": "uwp/design/controls-and-patterns/controls-and-events-intro.md",
+ "redirect_url": "/windows/apps/design/controls/controls-and-events-intro",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-multiplayeractivitydetails.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-multiplayeractivitydetails",
+ "source_path": "uwp/design/controls-and-patterns/custom-transport-controls.md",
+ "redirect_url": "/windows/apps/design/controls/custom-transport-controls",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-multiplayersession.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-multiplayersession",
+ "source_path": "uwp/design/controls-and-patterns/data-template-selector.md",
+ "redirect_url": "/windows/apps/design/controls/data-template-selector",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-multiplayersessionreference.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-multiplayersessionreference",
+ "source_path": "uwp/design/controls-and-patterns/date-and-time.md",
+ "redirect_url": "/windows/apps/design/controls/date-and-time",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-multiplayersessionrequest.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-multiplayersessionrequest",
+ "source_path": "uwp/design/controls-and-patterns/date-picker.md",
+ "redirect_url": "/windows/apps/design/controls/date-picker",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-paginginfo.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-paginginfo",
+ "source_path": "uwp/design/controls-and-patterns/dialogs-and-flyouts/dialogs.md",
+ "redirect_url": "/windows/apps/design/controls/dialogs-and-flyouts/dialogs",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-peoplelist.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-peoplelist",
+ "source_path": "uwp/design/controls-and-patterns/dialogs-and-flyouts/flyouts.md",
+ "redirect_url": "/windows/apps/design/controls/dialogs-and-flyouts/flyouts",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-permissioncheckbatchrequest.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-permissioncheckbatchrequest",
+ "source_path": "uwp/design/controls-and-patterns/dialogs-and-flyouts/index.md",
+ "redirect_url": "/windows/apps/design/controls/dialogs-and-flyouts/index",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-permissioncheckbatchresponse.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-permissioncheckbatchresponse",
+ "source_path": "uwp/design/controls-and-patterns/dialogs-and-flyouts/teaching-tip.md",
+ "redirect_url": "/windows/apps/design/controls/dialogs-and-flyouts/teaching-tip",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-permissioncheckbatchuserresponse.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-permissioncheckbatchuserresponse",
+ "source_path": "uwp/design/controls-and-patterns/flipview.md",
+ "redirect_url": "/windows/apps/design/controls/flipview",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-permissioncheckresponse.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-permissioncheckresponse",
+ "source_path": "uwp/design/controls-and-patterns/forms.md",
+ "redirect_url": "/windows/apps/design/controls/forms",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-permissioncheckresult.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-permissioncheckresult",
+ "source_path": "uwp/design/controls-and-patterns/hyperlinks.md",
+ "redirect_url": "/windows/apps/design/controls/hyperlinks",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-person.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-person",
+ "source_path": "uwp/design/controls-and-patterns/images-imagebrushes.md",
+ "redirect_url": "/windows/apps/design/controls/images-imagebrushes",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-personsummary.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-personsummary",
+ "source_path": "uwp/design/controls-and-patterns/index.md",
+ "redirect_url": "/windows/apps/design/controls/index",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-player.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-player",
+ "source_path": "uwp/design/controls-and-patterns/infobar.md",
+ "redirect_url": "/windows/apps/design/controls/infobar",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-presencerecord.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-presencerecord",
+ "source_path": "uwp/design/controls-and-patterns/inking-controls.md",
+ "redirect_url": "/windows/apps/design/controls/inking-controls",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-profile.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-profile",
+ "source_path": "uwp/design/controls-and-patterns/inverted-lists.md",
+ "redirect_url": "/windows/apps/design/controls/inverted-lists",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-progression.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-progression",
+ "source_path": "uwp/design/controls-and-patterns/item-containers-templates.md",
+ "redirect_url": "/windows/apps/design/controls/item-containers-templates",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-property.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-property",
+ "source_path": "uwp/design/controls-and-patterns/item-templates-gridview.md",
+ "redirect_url": "/windows/apps/design/controls/item-templates-gridview",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-queryclipsresponse.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-queryclipsresponse",
+ "source_path": "uwp/design/controls-and-patterns/item-templates-listview.md",
+ "redirect_url": "/windows/apps/design/controls/item-templates-listview",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-quota.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-quota",
+ "source_path": "uwp/design/controls-and-patterns/items-repeater.md",
+ "redirect_url": "/windows/apps/design/controls/items-repeater",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-requirement.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-requirement",
+ "source_path": "uwp/design/controls-and-patterns/labels.md",
+ "redirect_url": "/windows/apps/design/controls/labels",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-resetreputation.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-resetreputation",
+ "source_path": "uwp/design/controls-and-patterns/list-details.md",
+ "redirect_url": "/windows/apps/design/controls/list-details",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-reward.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-reward",
+ "source_path": "uwp/design/controls-and-patterns/lists.md",
+ "redirect_url": "/windows/apps/design/controls/lists",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-richpresencerequest.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-richpresencerequest",
+ "source_path": "uwp/design/controls-and-patterns/listview-and-gridview.md",
+ "redirect_url": "/windows/apps/design/controls/listview-and-gridview",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-serviceerror.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-serviceerror",
+ "source_path": "uwp/design/controls-and-patterns/listview-filtering.md",
+ "redirect_url": "/windows/apps/design/controls/listview-filtering",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-serviceerrorresponse.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-serviceerrorresponse",
+ "source_path": "uwp/design/controls-and-patterns/media-playback.md",
+ "redirect_url": "/windows/apps/design/controls/media-playback",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-sessionentry.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-sessionentry",
+ "source_path": "uwp/design/controls-and-patterns/menus.md",
+ "redirect_url": "/windows/apps/design/controls/menus",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-titleassociation.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-titleassociation",
+ "source_path": "uwp/design/controls-and-patterns/navigationview.md",
+ "redirect_url": "/windows/apps/design/controls/navigationview",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-titleblob.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-titleblob",
+ "source_path": "uwp/design/controls-and-patterns/nested-ui.md",
+ "redirect_url": "/windows/apps/design/controls/nested-ui",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-titlerecord.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-titlerecord",
+ "source_path": "uwp/design/controls-and-patterns/number-box.md",
+ "redirect_url": "/windows/apps/design/controls/number-box",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-titlerequest.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-titlerequest",
+ "source_path": "uwp/design/controls-and-patterns/password-box.md",
+ "redirect_url": "/windows/apps/design/controls/password-box",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-updatemetadatarequest.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-updatemetadatarequest",
+ "source_path": "uwp/design/controls-and-patterns/person-picture.md",
+ "redirect_url": "/windows/apps/design/controls/person-picture",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-user.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-user",
+ "source_path": "uwp/design/controls-and-patterns/pivot.md",
+ "redirect_url": "/windows/apps/design/controls/pivot",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-userclaims.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-userclaims",
+ "source_path": "uwp/design/controls-and-patterns/progress-controls.md",
+ "redirect_url": "/windows/apps/design/controls/progress-controls",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-userlist.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-userlist",
+ "source_path": "uwp/design/controls-and-patterns/pull-to-refresh.md",
+ "redirect_url": "/windows/apps/design/controls/pull-to-refresh",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-usersettings.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-usersettings",
+ "source_path": "uwp/design/controls-and-patterns/radio-button.md",
+ "redirect_url": "/windows/apps/design/controls/radio-button",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-usertitlev2.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-usertitlev2",
+ "source_path": "uwp/design/controls-and-patterns/rating.md",
+ "redirect_url": "/windows/apps/design/controls/rating",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-verifystringresult.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-verifystringresult",
+ "source_path": "uwp/design/controls-and-patterns/resourcedictionary-and-xaml-resource-references.md",
+ "redirect_url": "/windows/apps/design/style/xaml-resource-dictionary",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/json/json-xuidlist.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/json/json-xuidlist",
+ "source_path": "uwp/design/controls-and-patterns/rich-edit-box.md",
+ "redirect_url": "/windows/apps/design/controls/rich-edit-box",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/atoc-xboxlivews-reference-uris.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/atoc-xboxlivews-reference-uris",
+ "source_path": "uwp/design/controls-and-patterns/rich-text-block.md",
+ "redirect_url": "/windows/apps/design/controls/rich-text-block",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/achievements/atoc-reference-achievementsv2.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/achievements/atoc-reference-achievementsv2",
+ "source_path": "uwp/design/controls-and-patterns/scroll-controls.md",
+ "redirect_url": "/windows/apps/design/controls/scroll-controls",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/achievements/uri-achievementsusersxuidachievementsgetv2.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/achievements/uri-achievementsusersxuidachievementsgetv2",
+ "source_path": "uwp/design/controls-and-patterns/selection-modes.md",
+ "redirect_url": "/windows/apps/design/controls/selection-modes",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/achievements/uri-achievementsusersxuidachievementsv2.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/achievements/uri-achievementsusersxuidachievementsv2",
+ "source_path": "uwp/design/controls-and-patterns/semantic-zoom.md",
+ "redirect_url": "/windows/apps/design/controls/semantic-zoom",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/achievements/uri-usersxuidachievementsscidachievementid.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/achievements/uri-usersxuidachievementsscidachievementid",
+ "source_path": "uwp/design/controls-and-patterns/shapes.md",
+ "redirect_url": "/windows/apps/design/controls/shapes",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/achievements/uri-usersxuidachievementsscidachievementidget.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/achievements/uri-usersxuidachievementsscidachievementidget",
+ "source_path": "uwp/design/controls-and-patterns/slider.md",
+ "redirect_url": "/windows/apps/design/controls/slider",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/dvr/atoc-reference-dvr.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/dvr/atoc-reference-dvr",
+ "source_path": "uwp/design/controls-and-patterns/split-view.md",
+ "redirect_url": "/windows/apps/design/controls/split-view",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/dvr/uri-publicscidclips.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/dvr/uri-publicscidclips",
+ "source_path": "uwp/design/controls-and-patterns/swipe.md",
+ "redirect_url": "/windows/apps/design/controls/swipe",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/dvr/uri-publicscidclipsget.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/dvr/uri-publicscidclipsget",
+ "source_path": "uwp/design/controls-and-patterns/tab-view.md",
+ "redirect_url": "/windows/apps/design/controls/tab-view",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/dvr/uri-uri.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/dvr/uri-uri",
+ "source_path": "uwp/design/controls-and-patterns/text-block.md",
+ "redirect_url": "/windows/apps/design/controls/text-block",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/dvr/uri-uriget.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/dvr/uri-uriget",
+ "source_path": "uwp/design/controls-and-patterns/text-box.md",
+ "redirect_url": "/windows/apps/design/controls/text-box",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/dvr/uri-uriput.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/dvr/uri-uriput",
+ "source_path": "uwp/design/controls-and-patterns/text-controls.md",
+ "redirect_url": "/windows/apps/design/controls/text-controls",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/dvr/uri-usersmescidclips.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/dvr/uri-usersmescidclips",
+ "source_path": "uwp/design/controls-and-patterns/text-handwriting-view.md",
+ "redirect_url": "/windows/apps/design/controls/text-handwriting-view",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/dvr/uri-usersmescidclipsgameclipid.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/dvr/uri-usersmescidclipsgameclipid",
+ "source_path": "uwp/design/controls-and-patterns/time-picker.md",
+ "redirect_url": "/windows/apps/design/controls/time-picker",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/dvr/uri-usersmescidclipsgameclipiddelete.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/dvr/uri-usersmescidclipsgameclipiddelete",
+ "source_path": "uwp/design/controls-and-patterns/toggles.md",
+ "redirect_url": "/windows/apps/design/controls/toggles",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/dvr/uri-usersmescidclipsgameclipidpost.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/dvr/uri-usersmescidclipsgameclipidpost",
+ "source_path": "uwp/design/controls-and-patterns/tooltips.md",
+ "redirect_url": "/windows/apps/design/controls/tooltips",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/dvr/uri-usersmescidclipspost.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/dvr/uri-usersmescidclipspost",
+ "source_path": "uwp/design/controls-and-patterns/tree-view.md",
+ "redirect_url": "/windows/apps/design/controls/tree-view",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/dvr/uri-usersowneridclips.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/dvr/uri-usersowneridclips",
+ "source_path": "uwp/design/controls-and-patterns/two-pane-view.md",
+ "redirect_url": "/windows/apps/design/controls/two-pane-view",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/dvr/uri-usersowneridclipsget.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/dvr/uri-usersowneridclipsget",
+ "source_path": "uwp/design/controls-and-patterns/web-view.md",
+ "redirect_url": "/windows/apps/design/controls/web-view",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/dvr/uri-usersowneridscidclipsgameclipid.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/dvr/uri-usersowneridscidclipsgameclipid",
+ "source_path": "uwp/design/controls-and-patterns/xaml-styles.md",
+ "redirect_url": "/windows/apps/develop/platform/xaml/xaml-styles",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/dvr/uri-usersowneridscidclipsgameclipidget.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/dvr/uri-usersowneridscidclipsgameclipidget",
+ "source_path": "uwp/design/controls-and-patterns/xaml-theme-resources.md",
+ "redirect_url": "/windows/apps/develop/platform/xaml/xaml-theme-resources",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/gamerpic/atoc-reference-gamerpic.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/gamerpic/atoc-reference-gamerpic",
+ "source_path": "uwp/design/devices/designing-for-MR.md",
+ "redirect_url": "/windows/apps/design/devices/designing-for-MR",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/gamerpic/uri-usersmegamerpic.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/gamerpic/uri-usersmegamerpic",
+ "source_path": "uwp/design/devices/designing-for-tv.md",
+ "redirect_url": "/windows/apps/design/devices/designing-for-tv",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/gamerpic/uri-usersmegamerpicput.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/gamerpic/uri-usersmegamerpicput",
+ "source_path": "uwp/design/devices/index.md",
+ "redirect_url": "/windows/apps/design/devices/index",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/gsdk/atoc-gsdk-uri-reference.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/gsdk/atoc-gsdk-uri-reference",
+ "source_path": "uwp/design/downloads/index.md",
+ "redirect_url": "/windows/apps/design/downloads/index",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/gsdk/uri-qosservers-get.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/gsdk/uri-qosservers-get",
+ "source_path": "uwp/design/globalizing/adjust-layout-and-fonts--and-support-rtl.md",
+ "redirect_url": "/windows/apps/design/globalizing/adjust-layout-and-fonts--and-support-rtl",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/gsdk/uri-qosservers.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/gsdk/uri-qosservers",
+ "source_path": "uwp/design/globalizing/design-for-bidi-text.md",
+ "redirect_url": "/windows/apps/design/globalizing/design-for-bidi-text",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/gsdk/uri-titlestitleidclusters-post.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/gsdk/uri-titlestitleidclusters-post",
+ "source_path": "uwp/design/globalizing/glob-numeralsystem-values.md",
+ "redirect_url": "/windows/apps/design/globalizing/glob-numeralsystem-values",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/gsdk/uri-titlestitleidclusters.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/gsdk/uri-titlestitleidclusters",
+ "source_path": "uwp/design/globalizing/globalizing-portal.md",
+ "redirect_url": "/windows/apps/design/globalizing/globalizing-portal",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/gsdk/uri-titlestitleidsessionhosts-post.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/gsdk/uri-titlestitleidsessionhosts-post",
+ "source_path": "uwp/design/globalizing/guidelines-and-checklist-for-globalizing-your-app.md",
+ "redirect_url": "/windows/apps/design/globalizing/guidelines-and-checklist-for-globalizing-your-app",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/gsdk/uri-titlestitleidsessionhosts.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/gsdk/uri-titlestitleidsessionhosts",
+ "source_path": "uwp/design/globalizing/japanese-era-change.md",
+ "redirect_url": "/windows/apps/design/globalizing/japanese-era-change",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/gsdk/uri-titlestitleidsessionssessionidallocationstatus-get.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/gsdk/uri-titlestitleidsessionssessionidallocationstatus-get",
+ "source_path": "uwp/design/globalizing/loc-international-fonts.md",
+ "redirect_url": "/windows/apps/design/globalizing/loc-international-fonts",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/gsdk/uri-titlestitleidsessionssessionidallocationstatus.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/gsdk/uri-titlestitleidsessionssessionidallocationstatus",
+ "source_path": "uwp/design/globalizing/manage-language-and-region.md",
+ "redirect_url": "/windows/apps/design/globalizing/manage-language-and-region",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/gsdk/uri-titlestitleidvariants-post.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/gsdk/uri-titlestitleidvariants-post",
+ "source_path": "uwp/design/globalizing/prepare-your-app-for-localization.md",
+ "redirect_url": "/windows/apps/design/globalizing/prepare-your-app-for-localization",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/gsdk/uri-titlestitleidvariants.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/gsdk/uri-titlestitleidvariants",
+ "source_path": "uwp/design/globalizing/use-global-ready-formats.md",
+ "redirect_url": "/windows/apps/design/globalizing/use-global-ready-formats",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/leaderboard/atoc-reference-leaderboard.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/leaderboard/atoc-reference-leaderboard",
+ "source_path": "uwp/design/globalizing/use-mat.md",
+ "redirect_url": "/windows/apps/design/globalizing/use-mat",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/leaderboard/uri-scidsscidleaderboardsleaderboardname.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/leaderboard/uri-scidsscidleaderboardsleaderboardname",
+ "source_path": "uwp/design/globalizing/use-patterns-to-format-dates-and-times.md",
+ "redirect_url": "/windows/apps/design/globalizing/use-patterns-to-format-dates-and-times",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/leaderboard/uri-scidsscidleaderboardsleaderboardnameget.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/leaderboard/uri-scidsscidleaderboardsleaderboardnameget",
+ "source_path": "uwp/design/globalizing/use-utf8-code-page.md",
+ "redirect_url": "/windows/apps/design/globalizing/use-utf8-code-page",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/leaderboard/uri-scidsscidleaderboardsleaderboardnamegetvaluemetadata.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/leaderboard/uri-scidsscidleaderboardsleaderboardnamegetvaluemetadata",
+ "source_path": "uwp/design/in-app-help/external-help.md",
+ "redirect_url": "/windows/apps/design/in-app-help/external-help",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/leaderboard/uri-usersxuidscidstatnamepeople.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/leaderboard/uri-usersxuidscidstatnamepeople",
+ "source_path": "uwp/design/in-app-help/guidelines-for-app-help.md",
+ "redirect_url": "/windows/apps/design/in-app-help/guidelines-for-app-help",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/leaderboard/uri-usersxuidscidstatnamepeopleget.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/leaderboard/uri-usersxuidscidstatnamepeopleget",
+ "source_path": "uwp/design/in-app-help/in-app-help.md",
+ "redirect_url": "/windows/apps/design/in-app-help/in-app-help",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/lists/atoc-reference-lists.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/lists/atoc-reference-lists",
+ "source_path": "uwp/design/in-app-help/instructional-ui.md",
+ "redirect_url": "/windows/apps/design/in-app-help/instructional-ui",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/lists/uri-usersxuidlistspinslistname.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/lists/uri-usersxuidlistspinslistname",
+ "source_path": "uwp/design/index.md",
+ "redirect_url": "/windows/apps/design/index",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/lists/uri-usersxuidlistspinslistnamecontainsitems.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/lists/uri-usersxuidlistspinslistnamecontainsitems",
+ "source_path": "uwp/design/input/access-keys.md",
+ "redirect_url": "/windows/apps/design/input/access-keys",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/lists/uri-usersxuidlistspinslistnamecontainsitemspost.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/lists/uri-usersxuidlistspinslistnamecontainsitemspost",
+ "source_path": "uwp/design/input/convert-ink-to-text.md",
+ "redirect_url": "/windows/apps/design/input/convert-ink-to-text",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/lists/uri-usersxuidlistspinslistnamedelete.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/lists/uri-usersxuidlistspinslistnamedelete",
+ "source_path": "uwp/design/input/cortana-deep-link-into-your-app.md",
+ "redirect_url": "/previous-versions/windows/uwp/ui-input/cortana-deep-link-into-your-app",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/lists/uri-usersxuidlistspinslistnameget.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/lists/uri-usersxuidlistspinslistnameget",
+ "source_path": "uwp/design/input/cortana-design-guidelines.md",
+ "redirect_url": "/previous-versions/windows/uwp/ui-input/cortana-design-guidelines",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/lists/uri-usersxuidlistspinslistnameindex.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/lists/uri-usersxuidlistspinslistnameindex",
+ "source_path": "uwp/design/input/cortana-dynamically-modify-voice-command-definition-vcd-phrase-lists.md",
+ "redirect_url": "/previous-versions/windows/uwp/ui-input/cortana-dynamically-modify-voice-command-definition-vcd-phrase-lists",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/lists/uri-usersxuidlistspinslistnameindexpost.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/lists/uri-usersxuidlistspinslistnameindexpost",
+ "source_path": "uwp/design/input/cortana-interact-with-a-background-app.md",
+ "redirect_url": "/previous-versions/windows/uwp/ui-input/cortana-interact-with-a-background-app",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/lists/uri-usersxuidlistspinslistnamepost.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/lists/uri-usersxuidlistspinslistnamepost",
+ "source_path": "uwp/design/input/cortana-interactions.md",
+ "redirect_url": "/previous-versions/windows/uwp/ui-input/cortana-interactions",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/lists/uri-usersxuidlistspinslistnameput.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/lists/uri-usersxuidlistspinslistnameput",
+ "source_path": "uwp/design/input/cortana-launch-a-background-app-with-voice-commands.md",
+ "redirect_url": "/previous-versions/windows/uwp/ui-input/cortana-launch-a-background-app-with-voice-commands",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/lists/uri-usersxuidlistspinslistnameremoveitems.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/lists/uri-usersxuidlistspinslistnameremoveitems",
+ "source_path": "uwp/design/input/cortana-launch-a-foreground-app-with-voice-commands.md",
+ "redirect_url": "/previous-versions/windows/uwp/ui-input/cortana-launch-a-foreground-app-with-voice-commands",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/lists/uri-usersxuidlistspinslistnameremoveitemsdelete.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/lists/uri-usersxuidlistspinslistnameremoveitemsdelete",
+ "source_path": "uwp/design/input/cortana-support-natural-language-voice-commands.md",
+ "redirect_url": "/previous-versions/windows/uwp/ui-input/cortana-support-natural-language-voice-commands",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/lists/uri-usersxuidlistspinslistnameremoveitemspost.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/lists/uri-usersxuidlistspinslistnameremoveitemspost",
+ "source_path": "uwp/design/input/custom-text-input.md",
+ "redirect_url": "/windows/apps/design/input/custom-text-input",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/atoc-reference-marketplace.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/atoc-reference-marketplace",
+ "source_path": "uwp/design/input/define-custom-recognition-constraints.md",
+ "redirect_url": "/windows/apps/design/input/define-custom-recognition-constraints",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-inventory.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-inventory",
+ "source_path": "uwp/design/input/drag-and-drop.md",
+ "redirect_url": "/windows/apps/develop/data/drag-and-drop",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-inventoryconsumablesitemurl.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-inventoryconsumablesitemurl",
+ "source_path": "uwp/design/input/enable-continuous-dictation.md",
+ "redirect_url": "/windows/apps/design/input/enable-continuous-dictation",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-inventoryconsumablesitemurlpost.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-inventoryconsumablesitemurlpost",
+ "source_path": "uwp/design/input/focus-navigation-programmatic.md",
+ "redirect_url": "/windows/apps/design/input/focus-navigation-programmatic",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-inventoryget.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-inventoryget",
+ "source_path": "uwp/design/input/focus-navigation.md",
+ "redirect_url": "/windows/apps/design/input/focus-navigation",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-inventoryitemurl.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-inventoryitemurl",
+ "source_path": "uwp/design/input/gamepad-and-remote-interactions.md",
+ "redirect_url": "/windows/apps/design/input/gamepad-and-remote-interactions",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-inventoryitemurlget.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-inventoryitemurlget",
+ "source_path": "uwp/design/input/gaze-interactions.md",
+ "redirect_url": "/windows/apps/design/input/gaze-interactions",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-localecrossmediagroupsearch.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-localecrossmediagroupsearch",
+ "source_path": "uwp/design/input/guidelines-for-cross-slide.md",
+ "redirect_url": "/windows/apps/design/input/guidelines-for-cross-slide",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-localecrossmediagroupsearchget.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-localecrossmediagroupsearchget",
+ "source_path": "uwp/design/input/guidelines-for-optical-zoom.md",
+ "redirect_url": "/windows/apps/design/input/guidelines-for-optical-zoom",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalebrowse.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalebrowse",
+ "source_path": "uwp/design/input/guidelines-for-panning.md",
+ "redirect_url": "/windows/apps/design/input/guidelines-for-panning",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalebrowseget.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalebrowseget",
+ "source_path": "uwp/design/input/guidelines-for-rotation.md",
+ "redirect_url": "/windows/apps/design/input/guidelines-for-rotation",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalecontentrating.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalecontentrating",
+ "source_path": "uwp/design/input/guidelines-for-targeting.md",
+ "redirect_url": "/windows/apps/design/input/guidelines-for-targeting",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalecontentratingget.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalecontentratingget",
+ "source_path": "uwp/design/input/guidelines-for-textselection.md",
+ "redirect_url": "/windows/apps/design/input/guidelines-for-textselection",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocaledetails.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocaledetails",
+ "source_path": "uwp/design/input/guidelines-for-visualfeedback.md",
+ "redirect_url": "/windows/apps/design/input/guidelines-for-visualfeedback",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocaledetailsget.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocaledetailsget",
+ "source_path": "uwp/design/input/handle-pointer-input.md",
+ "redirect_url": "/windows/apps/design/input/handle-pointer-input",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalefields.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalefields",
+ "source_path": "uwp/design/input/identify-input-devices.md",
+ "redirect_url": "/windows/apps/design/input/identify-input-devices",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalefieldsget.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalefieldsget",
+ "source_path": "uwp/design/input/index.md",
+ "redirect_url": "/windows/apps/design/input/index",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemediaitemtypequeryrefinersubqueryrefinervalues.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemediaitemtypequeryrefinersubqueryrefinervalues",
+ "source_path": "uwp/design/input/ink-toolbar.md",
+ "redirect_url": "/windows/apps/design/input/ink-toolbar",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemediaitemtypequeryrefinersubqueryrefinervaluesget.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemediaitemtypequeryrefinersubqueryrefinervaluesget",
+ "source_path": "uwp/design/input/ink-walkthrough.md",
+ "redirect_url": "/windows/apps/design/input/ink-walkthrough",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemetadatamediagroups.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemetadatamediagroups",
+ "source_path": "uwp/design/input/input-injection.md",
+ "redirect_url": "/windows/apps/design/input/input-injection",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemetadatamediagroupsget.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemetadatamediagroupsget",
+ "source_path": "uwp/design/input/input-method-editor-requirements.md",
+ "redirect_url": "/windows/apps/design/input/input-method-editor-requirements",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemetadatamediagroupsmediaitemtypes.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemetadatamediagroupsmediaitemtypes",
+ "source_path": "uwp/design/input/input-method-editors.md",
+ "redirect_url": "/windows/apps/design/input/input-method-editors",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemetadatamediagroupsmediaitemtypesget.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemetadatamediagroupsmediaitemtypesget",
+ "source_path": "uwp/design/input/input-primer.md",
+ "redirect_url": "/windows/apps/design/input/input-primer",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemetadatamediaitemtypefields.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemetadatamediaitemtypefields",
+ "source_path": "uwp/design/input/keyboard-accelerators.md",
+ "redirect_url": "/windows/apps/design/input/keyboard-accelerators",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemetadatamediaitemtypefieldsget.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemetadatamediaitemtypefieldsget",
+ "source_path": "uwp/design/input/keyboard-events.md",
+ "redirect_url": "/windows/apps/design/input/keyboard-events",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemetadatamediaitemtypequeryrefiners.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemetadatamediaitemtypequeryrefiners",
+ "source_path": "uwp/design/input/keyboard-interactions.md",
+ "redirect_url": "/windows/apps/design/input/keyboard-interactions",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemetadatamediaitemtypequeryrefinersget.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemetadatamediaitemtypequeryrefinersget",
+ "source_path": "uwp/design/input/manage-issues-with-audio-input.md",
+ "redirect_url": "/windows/apps/design/input/manage-issues-with-audio-input",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemetadatamediaitemtypequeryrefinersqueryrefinername.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemetadatamediaitemtypequeryrefinersqueryrefinername",
+ "source_path": "uwp/design/input/mouse-interactions.md",
+ "redirect_url": "/windows/apps/design/input/mouse-interactions",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemetadatamediaitemtypequeryrefinersqueryrefinernameget.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemetadatamediaitemtypequeryrefinersqueryrefinernameget",
+ "source_path": "uwp/design/input/multiple-input-design-guidelines.md",
+ "redirect_url": "/windows/apps/design/input/multiple-input-design-guidelines",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemetadatamediaitemtypes.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemetadatamediaitemtypes",
+ "source_path": "uwp/design/input/pen-and-stylus-interactions.md",
+ "redirect_url": "/windows/apps/design/input/pen-and-stylus-interactions",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemetadatamediaitemtypesget.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemetadatamediaitemtypesget",
+ "source_path": "uwp/design/input/radialcontroller-walkthrough.md",
+ "redirect_url": "/windows/apps/design/input/radialcontroller-walkthrough",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemetadatamediaitemtypesortorders.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemetadatamediaitemtypesortorders",
+ "source_path": "uwp/design/input/respond-to-the-presence-of-the-touch-keyboard.md",
+ "redirect_url": "/windows/apps/design/input/respond-to-the-presence-of-the-touch-keyboard",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemetadatamediaitemtypesortordersget.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalemetadatamediaitemtypesortordersget",
+ "source_path": "uwp/design/input/save-and-load-ink.md",
+ "redirect_url": "/windows/apps/design/input/save-and-load-ink",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalesinglemediagroupsearch.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalesinglemediagroupsearch",
+ "source_path": "uwp/design/input/set-speech-recognition-timeouts.md",
+ "redirect_url": "/windows/apps/design/input/set-speech-recognition-timeouts",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalesinglemediagroupsearchget.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/marketplace/uri-medialocalesinglemediagroupsearchget",
+ "source_path": "uwp/design/input/specify-the-speech-recognizer-language.md",
+ "redirect_url": "/windows/apps/design/input/specify-the-speech-recognizer-language",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/matchtickets/atoc-reference-matchtickets.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/matchtickets/atoc-reference-matchtickets",
+ "source_path": "uwp/design/input/speech-interactions.md",
+ "redirect_url": "/windows/apps/design/input/speech-interactions",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/matchtickets/uri-scidhoppernameticketid.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/matchtickets/uri-scidhoppernameticketid",
+ "source_path": "uwp/design/input/speech-recognition.md",
+ "redirect_url": "/windows/apps/design/input/speech-recognition",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/matchtickets/uri-scidhoppernameticketiddelete.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/matchtickets/uri-scidhoppernameticketiddelete",
+ "source_path": "uwp/design/input/text-scaling.md",
+ "redirect_url": "/windows/apps/design/input/text-scaling",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/matchtickets/uri-serviceconfigsscidhoppershoppername.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/matchtickets/uri-serviceconfigsscidhoppershoppername",
+ "source_path": "uwp/design/input/touch-interactions.md",
+ "redirect_url": "/windows/apps/design/input/touch-interactions",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/matchtickets/uri-serviceconfigsscidhoppershoppernamepost.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/matchtickets/uri-serviceconfigsscidhoppershoppernamepost",
+ "source_path": "uwp/design/input/touchpad-interactions.md",
+ "redirect_url": "/windows/apps/design/input/touchpad-interactions",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/matchtickets/uri-serviceconfigsscidhoppershoppernamestats.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/matchtickets/uri-serviceconfigsscidhoppershoppernamestats",
+ "source_path": "uwp/design/input/use-input-scope-to-change-the-touch-keyboard.md",
+ "redirect_url": "/windows/apps/design/input/use-input-scope-to-change-the-touch-keyboard",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/matchtickets/uri-serviceconfigsscidhoppershoppernamestatsget.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/matchtickets/uri-serviceconfigsscidhoppershoppernamestatsget",
+ "source_path": "uwp/design/input/windows-wheel-interactions.md",
+ "redirect_url": "/windows/apps/design/input/windows-wheel-interactions",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/people/atoc-reference-people.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/people/atoc-reference-people",
+ "source_path": "uwp/design/layout/3-d-perspective-effects.md",
+ "redirect_url": "/windows/apps/develop/platform/xaml/3-d-perspective-effects",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/people/uri-usersowneridpeople.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/people/uri-usersowneridpeople",
+ "source_path": "uwp/design/layout/alignment-margin-padding.md",
+ "redirect_url": "/windows/apps/design/layout/alignment-margin-padding",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/people/uri-usersowneridpeopleget.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/people/uri-usersowneridpeopleget",
+ "source_path": "uwp/design/layout/app-window.md",
+ "redirect_url": "/windows/uwp/ui-input/app-window",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/people/uri-usersowneridpeopletargetid.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/people/uri-usersowneridpeopletargetid",
+ "source_path": "uwp/design/layout/application-view.md",
+ "redirect_url": "/windows/uwp/ui-input/application-view",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/people/uri-usersowneridpeopletargetidget.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/people/uri-usersowneridpeopletargetidget",
+ "source_path": "uwp/design/layout/attached-layouts.md",
+ "redirect_url": "/windows/apps/design/layout/attached-layouts",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/people/uri-usersowneridpeoplexuids.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/people/uri-usersowneridpeoplexuids",
+ "source_path": "uwp/design/layout/boxpanel-example-custom-panel.md",
+ "redirect_url": "/windows/apps/design/layout/boxpanel-example-custom-panel",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/people/uri-usersowneridpeoplexuidspost.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/people/uri-usersowneridpeoplexuidspost",
+ "source_path": "uwp/design/layout/custom-panels-overview.md",
+ "redirect_url": "/windows/apps/design/layout/custom-panels-overview",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/people/uri-usersowneridsummary.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/people/uri-usersowneridsummary",
+ "source_path": "uwp/design/layout/depth-shadow.md",
+ "redirect_url": "/windows/apps/design/layout/depth-shadow",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/people/uri-usersowneridsummaryget.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/people/uri-usersowneridsummaryget",
+ "source_path": "uwp/design/layout/grid-tutorial.md",
+ "redirect_url": "/windows/apps/design/layout/grid-tutorial",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/presence/atoc-reference-presence.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/presence/atoc-reference-presence",
+ "source_path": "uwp/design/layout/index.md",
+ "redirect_url": "/windows/apps/design/layout/index",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/presence/uri-usersbatch.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/presence/uri-usersbatch",
+ "source_path": "uwp/design/layout/layout-panels.md",
+ "redirect_url": "/windows/apps/design/layout/layout-panels",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/presence/uri-usersbatchpost.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/presence/uri-usersbatchpost",
+ "source_path": "uwp/design/layout/layouts-with-xaml.md",
+ "redirect_url": "/windows/apps/design/layout/layouts-with-xaml",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/presence/uri-usersme.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/presence/uri-usersme",
+ "source_path": "uwp/design/layout/page-layout.md",
+ "redirect_url": "/windows/apps/design/layout/page-layout",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/presence/uri-usersmeget.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/presence/uri-usersmeget",
+ "source_path": "uwp/design/layout/responsive-design.md",
+ "redirect_url": "/windows/apps/design/layout/responsive-design",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/presence/uri-usersmegroupsmoniker.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/presence/uri-usersmegroupsmoniker",
+ "source_path": "uwp/design/layout/screen-sizes-and-breakpoints-for-responsive-design.md",
+ "redirect_url": "/windows/apps/design/layout/screen-sizes-and-breakpoints-for-responsive-design",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/presence/uri-usersmegroupsmonikerget.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/presence/uri-usersmegroupsmonikerget",
+ "source_path": "uwp/design/layout/show-multiple-views.md",
+ "redirect_url": "/windows/uwp/ui-input/show-multiple-views",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/presence/uri-usersxuid.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/presence/uri-usersxuid",
+ "source_path": "uwp/design/layout/transforms.md",
+ "redirect_url": "/windows/apps/develop/platform/xaml/transforms",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/presence/uri-usersxuiddevicescurrenttitlescurrent.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/presence/uri-usersxuiddevicescurrenttitlescurrent",
+ "source_path": "uwp/design/motion/connected-animation.md",
+ "redirect_url": "/windows/apps/design/motion/connected-animation",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/presence/uri-usersxuiddevicescurrenttitlescurrentdelete.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/presence/uri-usersxuiddevicescurrenttitlescurrentdelete",
+ "source_path": "uwp/design/motion/content-transition-animations.md",
+ "redirect_url": "/windows/apps/design/motion/content-transition-animations",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/presence/uri-usersxuiddevicescurrenttitlescurrentpost.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/presence/uri-usersxuiddevicescurrenttitlescurrentpost",
+ "source_path": "uwp/design/motion/directionality-and-gravity.md",
+ "redirect_url": "/windows/apps/design/motion/directionality-and-gravity",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/presence/uri-usersxuidget.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/presence/uri-usersxuidget",
+ "source_path": "uwp/design/motion/index.md",
+ "redirect_url": "/windows/apps/design/motion/index",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/presence/uri-usersxuidgroupsmoniker.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/presence/uri-usersxuidgroupsmoniker",
+ "source_path": "uwp/design/motion/key-frame-and-easing-function-animations.md",
+ "redirect_url": "/windows/apps/design/motion/key-frame-and-easing-function-animations",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/presence/uri-usersxuidgroupsmonikerbroadcasting.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/presence/uri-usersxuidgroupsmonikerbroadcasting",
+ "source_path": "uwp/design/motion/motion-dragdrop.md",
+ "redirect_url": "/previous-versions/windows/uwp/ui-input/motion-dragdrop",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/presence/uri-usersxuidgroupsmonikerbroadcastingcount.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/presence/uri-usersxuidgroupsmonikerbroadcastingcount",
+ "source_path": "uwp/design/motion/motion-edgebased.md",
+ "redirect_url": "/previous-versions/windows/uwp/ui-input/motion-edgebased",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/presence/uri-usersxuidgroupsmonikerbroadcastingcountget.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/presence/uri-usersxuidgroupsmonikerbroadcastingcountget",
+ "source_path": "uwp/design/motion/motion-fade.md",
+ "redirect_url": "/previous-versions/windows/uwp/ui-input/motion-fade",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/presence/uri-usersxuidgroupsmonikerbroadcastingget.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/presence/uri-usersxuidgroupsmonikerbroadcastingget",
+ "source_path": "uwp/design/motion/motion-in-practice.md",
+ "redirect_url": "/windows/apps/design/motion/motion-in-practice",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/presence/uri-usersxuidgroupsmonikerget.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/presence/uri-usersxuidgroupsmonikerget",
+ "source_path": "uwp/design/motion/motion-list.md",
+ "redirect_url": "/previous-versions/windows/uwp/ui-input/motion-list",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/privacy/atoc-reference-privacyv2.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/privacy/atoc-reference-privacyv2",
+ "source_path": "uwp/design/motion/motion-pointer.md",
+ "redirect_url": "/previous-versions/windows/uwp/ui-input/motion-pointer",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/privacy/uri-privacyusersowneridpeoplemute.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/privacy/uri-privacyusersowneridpeoplemute",
+ "source_path": "uwp/design/motion/motion-popup-animations.md",
+ "redirect_url": "/previous-versions/windows/uwp/ui-input/motion-popup-animations",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/privacy/uri-privacyusersowneridpeoplemuteget.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/privacy/uri-privacyusersowneridpeoplemuteget",
+ "source_path": "uwp/design/motion/motion-reposition.md",
+ "redirect_url": "/previous-versions/windows/uwp/ui-input/motion-reposition",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/privacy/uri-privacyusersrequestoridpermissionvalidate.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/privacy/uri-privacyusersrequestoridpermissionvalidate",
+ "source_path": "uwp/design/motion/page-transitions.md",
+ "redirect_url": "/windows/apps/design/motion/page-transitions",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/privacy/uri-privacyusersrequestoridpermissionvalidateget.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/privacy/uri-privacyusersrequestoridpermissionvalidateget",
+ "source_path": "uwp/design/motion/parallax.md",
+ "redirect_url": "/windows/apps/design/motion/parallax",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/privacy/uri-privacyusersrequestoridpermissionvalidatepost.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/privacy/uri-privacyusersrequestoridpermissionvalidatepost",
+ "source_path": "uwp/design/motion/storyboarded-animations.md",
+ "redirect_url": "/windows/apps/design/motion/storyboarded-animations",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/privacy/uri-privacyusersxuidpeopleavoid.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/privacy/uri-privacyusersxuidpeopleavoid",
+ "source_path": "uwp/design/motion/timing-and-easing.md",
+ "redirect_url": "/windows/apps/design/motion/timing-and-easing",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/privacy/uri-privacyusersxuidpeopleavoidget.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/privacy/uri-privacyusersxuidpeopleavoidget",
+ "source_path": "uwp/design/motion/xaml-animation.md",
+ "redirect_url": "/windows/apps/design/motion/xaml-animation",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/profileV2/atoc-reference-profiles.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/profileV2/atoc-reference-profiles",
+ "source_path": "uwp/design/motion/xaml-property-animations.md",
+ "redirect_url": "/windows/apps/design/motion/xaml-property-animations",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/profileV2/uri-usersbatchprofilesettings.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/profileV2/uri-usersbatchprofilesettings",
+ "source_path": "uwp/design/shell/pin-to-taskbar.md",
+ "redirect_url": "/windows/apps/design/shell/pin-to-taskbar",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/profileV2/uri-usersbatchprofilesettingspost.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/profileV2/uri-usersbatchprofilesettingspost",
+ "source_path": "uwp/design/shell/tiles-and-notifications/WNS-Notification-Priorities.md",
+ "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/WNS-Notification-Priorities",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/profileV2/uri-usersuseridprofilesettingspeopleuserlist.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/profileV2/uri-usersuseridprofilesettingspeopleuserlist",
+ "source_path": "uwp/design/shell/tiles-and-notifications/adaptive-interactive-toasts.md",
+ "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/adaptive-interactive-toasts",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/profileV2/uri-usersuseridprofilesettingspeopleuserlistget.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/profileV2/uri-usersuseridprofilesettingspeopleuserlistget",
+ "source_path": "uwp/design/shell/tiles-and-notifications/adaptive-tiles-schema.md",
+ "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/adaptive-tiles-schema",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/reputation/atoc-reference-reputation.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/reputation/atoc-reference-reputation",
+ "source_path": "uwp/design/shell/tiles-and-notifications/alternate-channel-VAPID-webpush.md",
+ "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/alternate-channel-VAPID-webpush",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/reputation/uri-reputationusersbatchfeedback.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/reputation/uri-reputationusersbatchfeedback",
+ "source_path": "uwp/design/shell/tiles-and-notifications/badges.md",
+ "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/badges",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/reputation/uri-reputationusersbatchfeedbackpost.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/reputation/uri-reputationusersbatchfeedbackpost",
+ "source_path": "uwp/design/shell/tiles-and-notifications/channel-types.md",
+ "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/channel-types",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/reputation/uri-reputationusersxuidfeedback.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/reputation/uri-reputationusersxuidfeedback",
+ "source_path": "uwp/design/shell/tiles-and-notifications/chaseable-tile-notifications.md",
+ "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/chaseable-tile-notifications",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/reputation/uri-reputationusersxuidfeedbackpost.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/reputation/uri-reputationusersxuidfeedbackpost",
+ "source_path": "uwp/design/shell/tiles-and-notifications/choosing-a-notification-delivery-method.md",
+ "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/choosing-a-notification-delivery-method",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/reputation/uri-usersmeresetreputation.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/reputation/uri-usersmeresetreputation",
+ "source_path": "uwp/design/shell/tiles-and-notifications/create-adaptive-tiles.md",
+ "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/create-adaptive-tiles",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/reputation/uri-usersmeresetreputationpost.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/reputation/uri-usersmeresetreputationpost",
+ "source_path": "uwp/design/shell/tiles-and-notifications/creating-tiles.md",
+ "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/creating-tiles",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/reputation/uri-usersxuiddeleteuserdata.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/reputation/uri-usersxuiddeleteuserdata",
+ "source_path": "uwp/design/shell/tiles-and-notifications/custom-audio-on-toasts.md",
+ "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/custom-audio-on-toasts",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/reputation/uri-usersxuiddeleteuserdatapost.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/reputation/uri-usersxuiddeleteuserdatapost",
+ "source_path": "uwp/design/shell/tiles-and-notifications/custom-timestamps-on-toasts.md",
+ "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/custom-timestamps-on-toasts",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/reputation/uri-usersxuidresetreputation.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/reputation/uri-usersxuidresetreputation",
+ "source_path": "uwp/design/shell/tiles-and-notifications/firewall-allowlist-config.md",
+ "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/firewall-allowlist-config",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/reputation/uri-usersxuidresetreputationpost.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/reputation/uri-usersxuidresetreputationpost",
+ "source_path": "uwp/design/shell/tiles-and-notifications/includes/desktop-toast-activation-code.md",
+ "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/includes/desktop-toast-activation-code",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/atoc-reference-sessiondirectory.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/atoc-reference-sessiondirectory",
+ "source_path": "uwp/design/shell/tiles-and-notifications/includes/desktop-toast-activation-sequence.md",
+ "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/includes/desktop-toast-activation-sequence",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-handles.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-handles",
+ "source_path": "uwp/design/shell/tiles-and-notifications/includes/images-note.md",
+ "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/includes/images-note",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-handleshandleid.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-handleshandleid",
+ "source_path": "uwp/design/shell/tiles-and-notifications/includes/nuget-package-dotnet-warnings.md",
+ "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/includes/nuget-package-dotnet-warnings",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-handleshandleiddelete.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-handleshandleiddelete",
+ "source_path": "uwp/design/shell/tiles-and-notifications/includes/nuget-package.md",
+ "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/includes/nuget-package",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-handleshandleidget.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-handleshandleidget",
+ "source_path": "uwp/design/shell/tiles-and-notifications/includes/onlaunched-warning.md",
+ "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/includes/onlaunched-warning",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-handleshandleidsession.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-handleshandleidsession",
+ "source_path": "uwp/design/shell/tiles-and-notifications/includes/send-toast-basic-toast-intro.md",
+ "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/includes/send-toast-basic-toast-intro",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-handleshandleidsessionget.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-handleshandleidsessionget",
+ "source_path": "uwp/design/shell/tiles-and-notifications/includes/send-toast-intro.md",
+ "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/includes/send-toast-intro",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-handleshandleidsessionput.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-handleshandleidsessionput",
+ "source_path": "uwp/design/shell/tiles-and-notifications/index.md",
+ "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/index",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-handlespost.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-handlespost",
+ "source_path": "uwp/design/shell/tiles-and-notifications/notification-listener.md",
+ "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/notification-listener",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-handlesquery.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-handlesquery",
+ "source_path": "uwp/design/shell/tiles-and-notifications/notification-mirroring.md",
+ "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/notification-mirroring",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-handlesqueryincludepost.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-handlesqueryincludepost",
+ "source_path": "uwp/design/shell/tiles-and-notifications/notifications-visualizer.md",
+ "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/notifications-visualizer",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-handlesquerypost.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-handlesquerypost",
+ "source_path": "uwp/design/shell/tiles-and-notifications/periodic-notification-overview.md",
+ "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/periodic-notification-overview",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigscidsessiontemplatessessiontemplatenamebatch.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigscidsessiontemplatessessiontemplatenamebatch",
+ "source_path": "uwp/design/shell/tiles-and-notifications/primary-tile-apis.md",
+ "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/primary-tile-apis",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigscidsessiontemplatessessiontemplatenamebatchpost.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigscidsessiontemplatessessiontemplatenamebatchpost",
+ "source_path": "uwp/design/shell/tiles-and-notifications/raw-notification-overview.md",
+ "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/raw-notification-overview",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidbatch.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidbatch",
+ "source_path": "uwp/design/shell/tiles-and-notifications/scheduled-toast.md",
+ "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/scheduled-toast",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidbatchpost.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidbatchpost",
+ "source_path": "uwp/design/shell/tiles-and-notifications/secondary-tiles-desktop-pinning.md",
+ "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/secondary-tiles-desktop-pinning",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessions.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessions",
+ "source_path": "uwp/design/shell/tiles-and-notifications/secondary-tiles-guidance.md",
+ "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/secondary-tiles-guidance",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessionsget.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessionsget",
+ "source_path": "uwp/design/shell/tiles-and-notifications/secondary-tiles-pin-to-taskbar.md",
+ "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/secondary-tiles-pin-to-taskbar",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessiontemplates.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessiontemplates",
+ "source_path": "uwp/design/shell/tiles-and-notifications/secondary-tiles-pinning.md",
+ "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/secondary-tiles-pinning",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessiontemplatesget.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessiontemplatesget",
+ "source_path": "uwp/design/shell/tiles-and-notifications/secondary-tiles.md",
+ "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/secondary-tiles",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessiontemplatessessiontemplatename.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessiontemplatessessiontemplatename",
+ "source_path": "uwp/design/shell/tiles-and-notifications/send-local-toast-cpp-uwp.md",
+ "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/send-local-toast-cpp-uwp",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessiontemplatessessiontemplatenameget.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessiontemplatessessiontemplatenameget",
+ "source_path": "uwp/design/shell/tiles-and-notifications/send-local-toast-desktop-cpp-wrl.md",
+ "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/send-local-toast-desktop-cpp-wrl",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessiontemplatessessiontemplatenamesessionnamemembersindex.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessiontemplatessessiontemplatenamesessionnamemembersindex",
+ "source_path": "uwp/design/shell/tiles-and-notifications/send-local-toast-other-apps.md",
+ "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/send-local-toast-other-apps",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessiontemplatessessiontemplatenamesessionnamemembersindexdelete.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessiontemplatessessiontemplatenamesessionnamemembersindexdelete",
+ "source_path": "uwp/design/shell/tiles-and-notifications/send-local-toast.md",
+ "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/send-local-toast",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessiontemplatessessiontemplatenamesessionnamemembersservername.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessiontemplatessessiontemplatenamesessionnamemembersservername",
+ "source_path": "uwp/design/shell/tiles-and-notifications/sending-a-local-tile-notification.md",
+ "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/sending-a-local-tile-notification",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessiontemplatessessiontemplatenamesessionnamemembersservernamedelete.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessiontemplatessessiontemplatenamesessionnamemembersservernamedelete",
+ "source_path": "uwp/design/shell/tiles-and-notifications/special-tile-templates-catalog.md",
+ "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/special-tile-templates-catalog",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessiontemplatessessiontemplatenamesessions.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessiontemplatessessiontemplatenamesessions",
+ "source_path": "uwp/design/shell/tiles-and-notifications/the-code-generated-by-the-push-notification-wizard.md",
+ "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/the-code-generated-by-the-push-notification-wizard",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessiontemplatessessiontemplatenamesessionsget.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessiontemplatessessiontemplatenamesessionsget",
+ "source_path": "uwp/design/shell/tiles-and-notifications/tile-schema.md",
+ "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/tile-schema",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessiontemplatessessiontemplatenamesessionssessionname.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessiontemplatessessiontemplatenamesessionssessionname",
+ "source_path": "uwp/design/shell/tiles-and-notifications/tile-toast-language-scale-contrast.md",
+ "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/tile-toast-language-scale-contrast",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessiontemplatessessiontemplatenamesessionssessionnameget.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessiontemplatessessiontemplatenamesessionssessionnameget",
+ "source_path": "uwp/design/shell/tiles-and-notifications/toast-collections.md",
+ "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/toast-collections",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessiontemplatessessiontemplatenamesessionssessionnamemembersme.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessiontemplatessessiontemplatenamesessionssessionnamemembersme",
+ "source_path": "uwp/design/shell/tiles-and-notifications/toast-desktop-apps.md",
+ "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/toast-desktop-apps",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessiontemplatessessiontemplatenamesessionssessionnamemembersmedelete.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessiontemplatessessiontemplatenamesessionssessionnamemembersmedelete",
+ "source_path": "uwp/design/shell/tiles-and-notifications/toast-headers.md",
+ "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/toast-headers",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessiontemplatessessiontemplatenamesessionssessionnameput.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/sessiondirectory/uri-serviceconfigsscidsessiontemplatessessiontemplatenamesessionssessionnameput",
+ "source_path": "uwp/design/shell/tiles-and-notifications/toast-pending-update.md",
+ "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/toast-pending-update",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/atoc-reference-storagev2.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/atoc-reference-storagev2",
+ "source_path": "uwp/design/shell/tiles-and-notifications/toast-progress-bar.md",
+ "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/toast-progress-bar",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-globalscidsscid-get.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-globalscidsscid-get",
+ "source_path": "uwp/design/shell/tiles-and-notifications/toast-schema.md",
+ "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/toast-schema",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-globalscidsscid.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-globalscidsscid",
+ "source_path": "uwp/design/shell/tiles-and-notifications/toast-ux-guidance.md",
+ "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/toast-ux-guidance",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-globalscidssciddatapath-get.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-globalscidssciddatapath-get",
+ "source_path": "uwp/design/shell/tiles-and-notifications/universal-dismiss.md",
+ "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/universal-dismiss",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-globalscidssciddatapath.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-globalscidssciddatapath",
+ "source_path": "uwp/design/shell/tiles-and-notifications/windows-push-notification-services--wns--overview.md",
+ "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/windows-push-notification-services--wns--overview",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-globalscidssciddatapathandfilenametype-get.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-globalscidssciddatapathandfilenametype-get",
+ "source_path": "uwp/design/shell/title-bar.md",
+ "redirect_url": "/windows/apps/design/shell/title-bar",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-globalscidssciddatapathandfilenametype.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-globalscidssciddatapathandfilenametype",
+ "source_path": "uwp/design/style/acrylic.md",
+ "redirect_url": "/windows/apps/design/style/acrylic",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-jsonusersbatchscidssciddatapathandfilenametype-post.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-jsonusersbatchscidssciddatapathandfilenametype-post",
+ "source_path": "uwp/design/style/balancing-style-and-consistency.md",
+ "redirect_url": "/windows/apps/design/style/balancing-style-and-consistency",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-jsonusersbatchscidssciddatapathandfilenametype.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-jsonusersbatchscidssciddatapathandfilenametype",
+ "source_path": "uwp/design/style/brushes.md",
+ "redirect_url": "/windows/apps/develop/platform/xaml/brushes",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-jsonusersxuidscidsscid-get.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-jsonusersxuidscidsscid-get",
+ "source_path": "uwp/design/style/color.md",
+ "redirect_url": "/windows/apps/design/style/color",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-jsonusersxuidscidsscid.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-jsonusersxuidscidsscid",
+ "source_path": "uwp/design/style/icons.md",
+ "redirect_url": "/windows/apps/design/style/icons",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-jsonusersxuidscidssciddatapath-get.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-jsonusersxuidscidssciddatapath-get",
+ "source_path": "uwp/design/style/index.md",
+ "redirect_url": "/windows/apps/design/style/index",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-jsonusersxuidscidssciddatapath.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-jsonusersxuidscidssciddatapath",
+ "source_path": "uwp/design/style/reveal-focus.md",
+ "redirect_url": "/windows/uwp/ui-input/reveal-focus",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-jsonusersxuidscidssciddatapathandfilenametype-delete.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-jsonusersxuidscidssciddatapathandfilenametype-delete",
+ "source_path": "uwp/design/style/rounded-corner.md",
+ "redirect_url": "/windows/apps/design/style/rounded-corner",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-jsonusersxuidscidssciddatapathandfilenametype-get.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-jsonusersxuidscidssciddatapathandfilenametype-get",
+ "source_path": "uwp/design/style/segoe-ui-symbol-font.md",
+ "redirect_url": "/windows/apps/design/style/segoe-ui-symbol-font",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-jsonusersxuidscidssciddatapathandfilenametype-put.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-jsonusersxuidscidssciddatapathandfilenametype-put",
+ "source_path": "uwp/design/style/sound.md",
+ "redirect_url": "/windows/apps/design/style/sound",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-jsonusersxuidscidssciddatapathandfilenametype.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-jsonusersxuidscidssciddatapathandfilenametype",
+ "source_path": "uwp/design/style/spacing.md",
+ "redirect_url": "/windows/apps/design/style/spacing",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-sessionssessionidscidsscid-get.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-sessionssessionidscidsscid-get",
+ "source_path": "uwp/design/style/typography.md",
+ "redirect_url": "/windows/apps/design/style/typography",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-sessionssessionidscidsscid.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-sessionssessionidscidsscid",
+ "source_path": "uwp/design/style/writing-style.md",
+ "redirect_url": "/windows/apps/design/style/writing-style",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-sessionssessionidscidssciddatapath-get.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-sessionssessionidscidssciddatapath-get",
+ "source_path": "uwp/design/usability/index.md",
+ "redirect_url": "/windows/apps/design/usability/index",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-sessionssessionidscidssciddatapath.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-sessionssessionidscidssciddatapath",
+ "source_path": "uwp/design/windows-template-studio/index.md",
+ "redirect_url": "/windows/apps/design/windows-template-studio/index",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-sessionssessionidscidssciddatapathandfilenametype-delete.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-sessionssessionidscidssciddatapathandfilenametype-delete",
+ "source_path": "uwp/design/controls-and-patterns/menus-and-context-menus.md",
+ "redirect_url": "/windows/apps/design/controls/menus-and-context-menus",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-sessionssessionidscidssciddatapathandfilenametype-get.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-sessionssessionidscidssciddatapathandfilenametype-get",
+ "source_path": "hub/apps/fluent-design-system.md",
+ "redirect_url": "/windows/apps/design/index",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-sessionssessionidscidssciddatapathandfilenametype-put.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-sessionssessionidscidssciddatapathandfilenametype-put",
+ "source_path": "hub/apps/design/windows-template-studio/index.md",
+ "redirect_url": "/windows/apps/design/downloads/",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-sessionssessionidscidssciddatapathandfilenametype.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-sessionssessionidscidssciddatapathandfilenametype",
+ "source_path": "hub/apps/package-and-deploy/deploy-apps-that-use-the-windows-app-sdk.md",
+ "redirect_url": "/windows/apps/package-and-deploy/index",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-trustedplatformusersbatchscidssciddatapathandfilenametype-post.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-trustedplatformusersbatchscidssciddatapathandfilenametype-post",
+ "source_path": "hub/apps/design/layout/page-layout.md",
+ "redirect_url": "/windows/apps/design/basics/app-silhouette",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-trustedplatformusersbatchscidssciddatapathandfilenametype.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-trustedplatformusersbatchscidssciddatapathandfilenametype",
+ "source_path": "uwp/get-started/get-app-samples.md",
+ "redirect_url": "/windows/apps/get-started/samples",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-trustedplatformusersxuidscidsscid-get.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-trustedplatformusersxuidscidsscid-get",
+ "source_path": "hub/apps/whats-new/build2021-docs.md",
+ "redirect_url": "/windows/apps",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-trustedplatformusersxuidscidsscid.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-trustedplatformusersxuidscidsscid",
+ "source_path": "hub/apps/design/shell/title-bar.md",
+ "redirect_url": "/windows/apps/develop/title-bar",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-trustedplatformusersxuidscidssciddatapath-get.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-trustedplatformusersxuidscidssciddatapath-get",
+ "source_path": "uwp/csharp-winrt/index.md",
+ "redirect_url": "/windows/apps/develop/platform/csharp-winrt/index",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-trustedplatformusersxuidscidssciddatapath.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-trustedplatformusersxuidscidssciddatapath",
+ "source_path": "uwp/uwp/csharp-winrt/net-mappings-of-winrt-types.md",
+ "redirect_url": "/windows/apps/develop/platform/csharp-winrt/net-mappings-of-winrt-types",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-trustedplatformusersxuidscidssciddatapathandfilenametype-delete.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-trustedplatformusersxuidscidssciddatapathandfilenametype-delete",
+ "source_path": "uwp/csharp-winrt/net-projection-from-cppwinrt-component.md",
+ "redirect_url": "/windows/apps/develop/platform/csharp-winrt/net-projection-from-cppwinrt-component",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-trustedplatformusersxuidscidssciddatapathandfilenametype-get.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-trustedplatformusersxuidscidssciddatapathandfilenametype-get",
+ "source_path": "uwp/csharp-winrt/create-windows-runtime-component-cswinrt.md",
+ "redirect_url": "/windows/apps/develop/platform/csharp-winrt/create-windows-runtime-component-cswinrt",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-trustedplatformusersxuidscidssciddatapathandfilenametype-put.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-trustedplatformusersxuidscidssciddatapathandfilenametype-put",
+ "source_path": "uwp/csharp-winrt/authoring-diagnostics.md",
+ "redirect_url": "/windows/apps/develop/platform/csharp-winrt/authoring-diagnostics",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-trustedplatformusersxuidscidssciddatapathandfilenametype.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-trustedplatformusersxuidscidssciddatapathandfilenametype",
+ "source_path": "uwp/csharp-winrt/agile-objects.md",
+ "redirect_url": "/windows/apps/develop/platform/csharp-winrt/agile-objects",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-untrustedplatformusersbatchscidssciddatapathandfilenametype-post.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-untrustedplatformusersbatchscidssciddatapathandfilenametype-post",
- "redirect_document_id": false
+ "source_path": "hub/apps/reference/index.md",
+ "redirect_url": "/windows/apps/api-reference/index",
+ "redirect_document_id": true
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-untrustedplatformusersbatchscidssciddatapathandfilenametype.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-untrustedplatformusersbatchscidssciddatapathandfilenametype",
- "redirect_document_id": false
+ "source_path": "landing/arm-docs/index.yml",
+ "redirect_url": "/windows/arm/overview",
+ "redirect_document_id": true
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-untrustedplatformusersxuidscidsscid-get.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-untrustedplatformusersxuidscidsscid-get",
+ "source_path": "hub/apps/design/shell/tiles-and-notifications/alternate-channel-vapid-webpush.md",
+ "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/windows-push-notification-services--wns--overview",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-untrustedplatformusersxuidscidsscid.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-untrustedplatformusersxuidscidsscid",
+ "source_path": "hub/apps/get-started/simple-photo-viewer-winiu3.md",
+ "redirect_url": "/windows/apps/get-started/simple-photo-viewer-winui3",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-untrustedplatformusersxuidscidssciddatapath-get.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-untrustedplatformusersxuidscidssciddatapath-get",
+ "source_path": "hub/apps/get-started/migrate-from-uwp-to-winappsdk.md",
+ "redirect_url": "/windows/apps/windows-app-sdk/migrate-to-windows-app-sdk/migrate-to-windows-app-sdk-ovw",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-untrustedplatformusersxuidscidssciddatapath.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-untrustedplatformusersxuidscidssciddatapath",
- "redirect_document_id": false
+ "source_path": "hub/apps/windows-app-sdk/winforms-plus-winappsdk.md",
+ "redirect_url": "/windows/apps/windows-app-sdk/migrate-to-windows-app-sdk/winforms-plus-winappsdk",
+ "redirect_document_id": true
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-untrustedplatformusersxuidscidssciddatapathandfilenametype-delete.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-untrustedplatformusersxuidscidssciddatapathandfilenametype-delete",
- "redirect_document_id": false
+ "source_path": "hub/apps/windows-app-sdk/wpf-plus-winappsdk.md",
+ "redirect_url": "/windows/apps/windows-app-sdk/migrate-to-windows-app-sdk/wpf-plus-winappsdk",
+ "redirect_document_id": true
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-untrustedplatformusersxuidscidssciddatapathandfilenametype-get.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-untrustedplatformusersxuidscidssciddatapathandfilenametype-get",
+ "source_path": "hub/package-manager/package/windows-package-manager-policies-change-history.md",
+ "redirect_url": "/windows/package-manager/package/windows-package-manager-policies",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-untrustedplatformusersxuidscidssciddatapathandfilenametype-put.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-untrustedplatformusersxuidscidssciddatapathandfilenametype-put",
+ "source_path": "uwp/porting/arm64ec.md",
+ "redirect_url": "/windows/arm/arm64ec",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/storage/uri-untrustedplatformusersxuidscidssciddatapathandfilenametype.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/storage/uri-untrustedplatformusersxuidscidssciddatapathandfilenametype",
+ "source_path": "uwp/porting/apps-on-arm.md",
+ "redirect_url": "/windows/arm/overview",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/stringserver/atoc-reference-systemstringsvalidate.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/stringserver/atoc-reference-systemstringsvalidate",
+ "source_path": "uwp/porting/arm64ec-abi.md",
+ "redirect_url": "/windows/arm/arm64ec-abi",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/stringserver/uri-systemstringsvalidate.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/stringserver/uri-systemstringsvalidate",
+ "source_path": "uwp/porting/ios-to-uwp-root.md",
+ "redirect_url": "/windows/apps/get-started",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/stringserver/uri-systemstringsvalidatepost.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/stringserver/uri-systemstringsvalidatepost",
+ "source_path": "uwp/porting/selecting-an-approach-to-ios-and-uwp-app-development.md",
+ "redirect_url": "/windows/apps/get-started",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/titlehistory/atoc-reference-titlehistoryv2.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/titlehistory/atoc-reference-titlehistoryv2",
+ "source_path": "uwp/porting/android-ios-uwp-map.md",
+ "redirect_url": "/windows/apps/get-started",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/titlehistory/uri-titlehistoryusersxuidhistorytitlesgetv2.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/titlehistory/uri-titlehistoryusersxuidhistorytitlesgetv2",
+ "source_path": "uwp/porting/getting-started-animation.md",
+ "redirect_url": "/windows/apps/get-started",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/titlehistory/uri-titlehistoryusersxuidhistorytitlesv2.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/titlehistory/uri-titlehistoryusersxuidhistorytitlesv2",
+ "source_path": "uwp/porting/getting-started-choosing-a-programming-language.md",
+ "redirect_url": "/windows/apps/get-started",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/users/atoc-reference-users.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/users/atoc-reference-users",
+ "source_path": "uwp/porting/getting-started-common-controls.md",
+ "redirect_url": "/windows/apps/get-started",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/users/uri-usersxuidinbox.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/users/uri-usersxuidinbox",
+ "source_path": "uwp/porting/getting-started-creating-a-project.md",
+ "redirect_url": "/windows/apps/get-started",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/users/uri-usersxuidinboxget.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/users/uri-usersxuidinboxget",
+ "source_path": "uwp/porting/getting-started-getting-around-in-visual-studio.md",
+ "redirect_url": "/windows/apps/get-started",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/users/uri-usersxuidinboxmessageiddelete.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/users/uri-usersxuidinboxmessageiddelete",
+ "source_path": "uwp/porting/getting-started-navigation.md",
+ "redirect_url": "/windows/apps/get-started",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/users/uri-usersxuidinboxmessageidget.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/users/uri-usersxuidinboxmessageidget",
+ "source_path": "uwp/porting/getting-started-what-next.md",
+ "redirect_url": "/windows/apps/get-started",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/users/uri-usersxuidoutbox.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/users/uri-usersxuidoutbox",
+ "source_path": "uwp/porting/getting-started-with-uwp-for-ios-developers.md",
+ "redirect_url": "/windows/apps/get-started",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/users/uri-usersxuidoutboxpost.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/users/uri-usersxuidoutboxpost",
+ "source_path": "uwp/porting/setting-up-your-mac-with-windows-10.md",
+ "redirect_url": "/windows/apps/get-started",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/userstats/atoc-reference-userstats.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/userstats/atoc-reference-userstats",
- "redirect_document_id": false
+ "source_path": "hub/apps/windows-app-sdk/notifications/push/push-quickstart.md",
+ "redirect_url": "/windows/apps/windows-app-sdk/notifications/push-notifications/push-quickstart",
+ "redirect_document_id": true
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/userstats/uri-batch.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/userstats/uri-batch",
+ "source_path": "uwp/publish/account-types-locations-and-fees.md",
+ "redirect_url": "/windows/apps/publish/partner-center/account-types-locations-and-fees",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/userstats/uri-batchpost.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/userstats/uri-batchpost",
+ "source_path": "uwp/publish/add-on-submissions.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/add-on/create-app-submission",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/userstats/uri-usersxuidscidsscidstats.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/userstats/uri-usersxuidscidsscidstats",
+ "source_path": "uwp/publish/add-users-groups-and-azure-ad-applications.md",
+ "redirect_url": "/windows/apps/publish/partner-center/add-users-groups-and-azure-ad-applications",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/userstats/uri-usersxuidscidsscidstatsget.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/userstats/uri-usersxuidscidsscidstatsget",
+ "source_path": "uwp/publish/age-ratings.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msix/age-ratings",
"redirect_document_id": false
},
{
- "source_path": "uwp/xbox-live/xbox-live-rest/uri/userstats/uri-usersxuidscidsscidstatsgetvaluemetadata.md",
- "redirect_url": "/gaming/xbox-live/xbox-live-rest/uri/userstats/uri-usersxuidscidsscidstatsgetvaluemetadata",
+ "source_path": "uwp/publish/app-package-requirements.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msix/app-package-requirements",
"redirect_document_id": false
},
{
- "source_path": "uwp/composition/visual-layer-in-desktop-apps.md",
- "redirect_url": "/windows/apps/desktop/modernize/visual-layer-in-desktop-apps",
+ "source_path": "uwp/publish/app-screenshots-and-images.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msix/screenshots-and-images",
"redirect_document_id": false
},
{
- "source_path": "uwp/composition/using-the-visual-layer-with-wpf.md",
- "redirect_url": "/windows/apps/desktop/modernize/using-the-visual-layer-with-wpf",
+ "source_path": "uwp/publish/app-submissions.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msix/create-app-submission",
"redirect_document_id": false
},
{
- "source_path": "uwp/composition/using-the-visual-layer-with-windows-forms.md",
- "redirect_url": "/windows/apps/desktop/modernize/using-the-visual-layer-with-windows-forms",
+ "source_path": "uwp/publish/associate-azure-ad-with-partner-center.md",
+ "redirect_url": "/windows/apps/publish/partner-center/associate-azure-ad-with-partner-center",
"redirect_document_id": false
},
{
- "source_path": "uwp/composition/using-the-visual-layer-with-win32.md",
- "redirect_url": "/windows/apps/desktop/modernize/using-the-visual-layer-with-win32",
+ "source_path": "uwp/publish/avoid-common-certification-failures.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msix/resolve-submission-errors#avoid-common-certification-failures",
"redirect_document_id": false
},
{
- "source_path": "uwp/xaml-platform/xaml-host-controls.md",
- "redirect_url": "/windows/apps/desktop/modernize/xaml-islands",
+ "source_path": "uwp/publish/category-and-subcategory-table.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msix/categories-and-subcategories",
"redirect_document_id": false
},
{
- "source_path": "uwp/xaml-platform/using-the-xaml-hosting-api.md",
- "redirect_url": "/windows/apps/desktop/modernize/using-the-xaml-hosting-api",
+ "source_path": "uwp/publish/choose-visibility-options.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msix/visibility-options",
"redirect_document_id": false
},
{
- "source_path": "uwp/porting/desktop-to-uwp-root.md",
- "redirect_url": "/windows/msix/desktop/desktop-to-uwp-root",
+ "source_path": "uwp/publish/configure-precise-release-scheduling.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msix/schedule-pricing-changes#configure-precise-release-scheduling",
"redirect_document_id": false
},
{
- "source_path": "uwp/porting/desktop-to-uwp-prepare.md",
- "redirect_url": "/windows/msix/desktop/desktop-to-uwp-prepare",
+ "source_path": "uwp/publish/create-add-on-store-listings.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/add-on/create-app-store-listing",
"redirect_document_id": false
},
{
- "source_path": "uwp/porting/desktop-to-uwp-packaging-dot-net.md",
- "redirect_url": "/windows/msix/desktop/desktop-to-uwp-packaging-dot-net",
+ "source_path": "uwp/publish/create-app-store-listings.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msix/create-app-store-listing",
"redirect_document_id": false
},
{
- "source_path": "uwp/porting/desktop-to-uwp-run-desktop-app-converter.md",
- "redirect_url": "/windows/msix/desktop/desktop-to-uwp-run-desktop-app-converter",
+ "source_path": "uwp/publish/create-platform-specific-store-listings.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/create-platform-specific-store-listings?pivots=store-installer-msix",
"redirect_document_id": false
},
{
- "source_path": "uwp/porting/desktop-to-uwp-manual-conversion.md",
- "redirect_url": "/windows/msix/desktop/desktop-to-uwp-manual-conversion",
+ "source_path": "uwp/publish/create-your-app-by-reserving-a-name.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msix/reserve-your-apps-name",
"redirect_document_id": false
},
{
- "source_path": "uwp/porting/desktop-to-uwp-r2r.md",
- "redirect_url": "/windows/msix/desktop/desktop-to-uwp-r2r",
+ "source_path": "uwp/publish/define-market-selection.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msix/market-selection",
"redirect_document_id": false
},
{
- "source_path": "uwp/porting/desktop-to-uwp-behind-the-scenes.md",
- "redirect_url": "/windows/msix/desktop/desktop-to-uwp-behind-the-scenes",
+ "source_path": "uwp/publish/device-family-availability.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msix/upload-app-packages#device-family-availability",
"redirect_document_id": false
},
{
- "source_path": "uwp/porting/desktop-to-uwp-known-issues.md",
- "redirect_url": "/windows/msix/desktop/desktop-to-uwp-known-issues",
+ "source_path": "uwp/publish/enter-add-on-properties.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/add-on/enter-app-properties",
"redirect_document_id": false
},
{
- "source_path": "uwp/porting/package-support-framework.md",
- "redirect_url": "/windows/msix/psf/package-support-framework",
+ "source_path": "uwp/publish/enter-app-properties.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msix/enter-app-properties",
"redirect_document_id": false
},
{
- "source_path": "uwp/porting/desktop-to-uwp-debug.md",
- "redirect_url": "/windows/msix/desktop/desktop-to-uwp-debug",
+ "source_path": "uwp/publish/guidance-for-app-package-management.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msix/app-package-management",
"redirect_document_id": false
},
{
- "source_path": "uwp/porting/desktop-to-uwp-test-windows-s.md",
- "redirect_url": "/windows/msix/desktop/desktop-to-uwp-test-windows-s",
+ "source_path": "uwp/publish/import-and-export-store-listings.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msix/import-and-export-store-listings",
"redirect_document_id": false
},
{
- "source_path": "uwp/porting/desktop-to-uwp-distribute.md",
- "redirect_url": "/windows/apps/desktop/modernize/desktop-to-uwp-distribute",
+ "source_path": "uwp/publish/manage-account-users.md",
+ "redirect_url": "/windows/apps/publish/partner-center/manage-account-users",
"redirect_document_id": false
},
{
- "source_path": "uwp/porting/desktop-to-uwp-enhance.md",
- "redirect_url": "/windows/apps/desktop/modernize/desktop-to-uwp-enhance",
+ "source_path": "uwp/publish/manage-app-names.md",
+ "redirect_url": "/windows/apps/publish/partner-center/manage-app-name-reservations",
"redirect_document_id": false
},
{
- "source_path": "uwp/porting/desktop-to-uwp-extend.md",
- "redirect_url": "/windows/apps/desktop/modernize/desktop-to-uwp-extend",
+ "source_path": "uwp/publish/manage-submission-options.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msix/manage-submission-options",
"redirect_document_id": false
},
{
- "source_path": "uwp/porting/desktop-to-uwp-extensions.md",
- "redirect_url": "/windows/apps/desktop/modernize/desktop-to-uwp-extensions",
+ "source_path": "uwp/publish/msiexe/age-ratings.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msi/age-ratings",
"redirect_document_id": false
},
{
- "source_path": "uwp/porting/desktop-to-uwp-supported-api.md",
- "redirect_url": "/windows/apps/desktop/modernize/desktop-to-uwp-supported-api",
+ "source_path": "uwp/publish/msiexe/app-submissions.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msi/create-app-submission",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/fluent-design-system/index.md",
- "redirect_url": "/windows/apps/fluent-design-system",
+ "source_path": "uwp/publish/msiexe/create-app-store-listings.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msi/create-app-store-listing",
"redirect_document_id": false
},
{
- "source_path": "uwp/packaging/packaging-uwp-apps.md",
- "redirect_url": "/windows/msix/package/packaging-uwp-apps",
+ "source_path": "uwp/publish/msiexe/create-your-app-by-reserving-a-name.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msi/reserve-your-apps-name",
"redirect_document_id": false
},
{
- "source_path": "uwp/packaging/manual-packaging-root.md",
- "redirect_url": "/windows/msix/package/manual-packaging-root",
+ "source_path": "uwp/publish/msiexe/enter-app-properties.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msi/enter-app-properties",
"redirect_document_id": false
},
{
- "source_path": "uwp/packaging/create-app-package-with-makeappx-tool.md",
- "redirect_url": "/windows/msix/package/create-app-package-with-makeappx-tool",
+ "source_path": "uwp/publish/msiexe/manage-submission-options.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/manage-submission-options?pivots=store-installer-msi-exe",
"redirect_document_id": false
},
{
- "source_path": "uwp/packaging/create-certificate-package-signing.md",
- "redirect_url": "/windows/msix/package/create-certificate-package-signing",
+ "source_path": "uwp/publish/msiexe/overview.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msi/reserve-your-apps-name",
"redirect_document_id": false
},
{
- "source_path": "uwp/packaging/sign-app-package-using-signtool.md",
- "redirect_url": "/windows/msix/package/sign-app-package-using-signtool",
+ "source_path": "uwp/publish/msiexe/provide-package-details.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msi/upload-app-packages",
"redirect_document_id": false
},
{
- "source_path": "uwp/packaging/package-folding.md",
- "redirect_url": "/windows/msix/package/package-folding",
+ "source_path": "uwp/publish/msiexe/set-app-pricing-and-availability.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msi/price-and-availability",
"redirect_document_id": false
},
{
- "source_path": "uwp/packaging/flat-bundles.md",
- "redirect_url": "/windows/msix/package/flat-bundles",
+ "source_path": "uwp/publish/msiexe/the-app-certification-process.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msi/app-certification-process",
"redirect_document_id": false
},
{
- "source_path": "uwp/packaging/asset-packages.md",
- "redirect_url": "/windows/msix/package/asset-packages",
+ "source_path": "uwp/publish/notes-for-certification.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/manage-submission-options#notes-for-certification",
"redirect_document_id": false
},
{
- "source_path": "uwp/packaging/packaging-layout.md",
- "redirect_url": "/windows/msix/package/packaging-layout",
+ "source_path": "uwp/publish/opening-a-developer-account.md",
+ "redirect_url": "/windows/apps/publish/partner-center/open-a-developer-account",
"redirect_document_id": false
},
{
- "source_path": "uwp/packaging/device-architecture.md",
- "redirect_url": "/windows/msix/package/device-architecture",
+ "source_path": "uwp/publish/package-version-numbering.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msix/app-package-requirements#package-version-numbering",
"redirect_document_id": false
},
{
- "source_path": "uwp/packaging/streaming-install.md",
- "redirect_url": "/windows/msix/package/streaming-install",
+ "source_path": "uwp/publish/partner-center-workspaces.md",
+ "redirect_url": "/windows/apps/publish/partner-center/partner-center-workspaces",
"redirect_document_id": false
},
{
- "source_path": "uwp/packaging/create-cgm.md",
- "redirect_url": "/windows/msix/package/create-cgm",
+ "source_path": "uwp/publish/product-declarations.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msix/product-declarations",
"redirect_document_id": false
},
{
- "source_path": "uwp/packaging/optional-packages.md",
- "redirect_url": "/windows/msix/package/optional-packages",
+ "source_path": "uwp/publish/pwa/create-your-app-by-reserving-a-name.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/pwa/reserve-your-apps-name",
"redirect_document_id": false
},
{
- "source_path": "uwp/packaging/optional-packages-with-executable-code.md",
- "redirect_url": "/windows/msix/package/optional-packages-with-executable-code",
+ "source_path": "uwp/publish/pwa/overview.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/pwa/reserve-your-apps-name",
"redirect_document_id": false
},
{
- "source_path": "hub/python/get-started/python-for-education.md",
- "redirect_url": "/windows/python/beginners",
+ "source_path": "uwp/publish/pwa/turn-your-website-pwa.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/pwa/turn-your-website-pwa",
"redirect_document_id": false
},
{
- "source_path": "hub/python/get-started/python-for-web.md",
- "redirect_url": "/windows/python/web-frameworks",
+ "source_path": "uwp/publish/resolve-submission-errors.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msix/resolve-submission-errors",
"redirect_document_id": false
},
{
- "source_path": "hub/python/get-started/python-for-scripting.md",
- "redirect_url": "/windows/python/scripting",
+ "source_path": "uwp/publish/set-add-on-pricing-and-availability.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/add-on/price-and-availability",
"redirect_document_id": false
},
{
- "source_path": "hub/mac-to-windows.md",
- "redirect_url": "/windows/dev-environment/mac-to-windows",
+ "source_path": "uwp/publish/set-and-schedule-app-pricing.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msix/schedule-pricing-changes",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/layout/content-as-objects.md",
- "redirect_url": "/windows/uwp/design",
+ "source_path": "uwp/publish/set-app-pricing-and-availability.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msix/price-and-availability",
"redirect_document_id": false
},
{
- "source_path": "uwp/monetize/get-xbox-one-game-acquisitions.md",
- "redirect_url": "/windows/uwp/monetize",
+ "source_path": "uwp/publish/set-custom-permissions-for-account-users.md",
+ "redirect_url": "/windows/apps/publish/partner-center/set-custom-permissions-for-account-users",
"redirect_document_id": false
},
{
- "source_path": "uwp/monetize/get-xbox-one-add-on-acquisitions.md",
- "redirect_url": "/windows/uwp/monetize",
+ "source_path": "uwp/publish/set-your-add-on-product-id.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/add-on/create-app-submission#set-your-add-on-product-type-and-product-id",
"redirect_document_id": false
},
{
- "source_path": "uwp/monetize/get-error-reporting-data-for-your-xbox-one-game.md",
- "redirect_url": "/windows/uwp/monetize",
+ "source_path": "uwp/publish/supported-languages.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msix/app-package-requirements#supported-languages",
"redirect_document_id": false
},
{
- "source_path": "uwp/monetize/get-details-for-an-error-in-your-xbox-one-game.md",
- "redirect_url": "/windows/uwp/monetize",
+ "source_path": "uwp/publish/the-app-certification-process.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msix/app-certification-process",
"redirect_document_id": false
},
{
- "source_path": "uwp/monetize/get-the-stack-trace-for-an-error-in-your-xbox-one-game.md",
- "redirect_url": "/windows/uwp/monetize",
+ "source_path": "uwp/publish/trademark-and-copyright-protection.md",
+ "redirect_url": "/windows/apps/publish/partner-center/trademark-and-copyright-protection",
"redirect_document_id": false
},
{
- "source_path": "uwp/monetize/download-the-cab-file-for-an-error-in-your-xbox-one-game.md",
- "redirect_url": "/windows/uwp/monetize",
+ "source_path": "uwp/publish/upload-app-packages.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msix/upload-app-packages",
"redirect_document_id": false
},
{
- "source_path": "uwp/porting/apps-on-arm-limitations.md",
- "redirect_url": "/windows/uwp/porting/apps-on-arm-troubleshooting-x86",
+ "source_path": "uwp/publish/write-a-great-app-description.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msix/write-great-app-description",
"redirect_document_id": false
},
{
- "source_path": "uwp/communication/ipc.md",
- "redirect_url": "/windows/uwp/communication/interprocess-communication",
- "redirect_document_id": false
+ "source_path": "hub/apps/develop/widgets/widget-service-providers.md",
+ "redirect_url": "/windows/apps/develop/widgets/widget-providers",
+ "redirect_document_id": true
},
{
- "source_path": "hub/android/index.md",
- "redirect_url": "/windows/android/overview",
- "redirect_document_id": false
+ "source_path": "landing/arm-docs/dev-kit.md",
+ "redirect_url": "/windows/arm/dev-kit/index",
+ "redirect_document_id": true
},
{
- "source_path": "hub/python/databases.md",
- "redirect_url": "/windows/wsl/tutorials/wsl-database",
+ "source_path": "uwp/publish/msiexe/store-submission-api.md",
+ "redirect_url": "/windows/apps/publish/store-submission-api",
"redirect_document_id": false
},
{
- "source_path": "hub/nodejs/databases.md",
- "redirect_url": "/windows/wsl/tutorials/wsl-database",
+ "source_path": "uwp/publish/msiexe/update-your-app.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msi/publish-update-to-your-app-on-store",
"redirect_document_id": false
},
{
- "source_path": "uwp/monetize/app-metadata-api-for-advertising-networks.md",
- "redirect_url": "/windows/uwp/monetize",
+ "source_path": "uwp/publish/acquisitions-report.md",
+ "redirect_url": "/windows/apps/publish/acquisitions-report",
"redirect_document_id": false
},
{
- "source_path": "hub/dev-environment/overview.md",
- "redirect_url": "/windows/dev-environment/",
+ "source_path": "uwp/publish/add-on-acquisitions-report.md",
+ "redirect_url": "/windows/apps/publish/add-on-acquisitions-report",
"redirect_document_id": false
},
{
- "source_path": "uwp/monetize/payment-request.md",
- "redirect_url": "/windows/uwp/monetize",
+ "source_path": "uwp/publish/advertising-performance-report.md",
+ "redirect_url": "/windows/apps/publish/advertising-performance-report",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/shell/tiles-and-notifications/toast-xml-schema.md",
- "redirect_url": "/windows/uwp/design/shell/tiles-and-notifications/toast-schema",
+ "source_path": "uwp/publish/analytics.md",
+ "redirect_url": "/windows/apps/publish/analytics",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/create-an-ad-campaign-for-your-app.md",
- "redirect_url": "/windows/uwp/monetize",
+ "source_path": "uwp/publish/msiexe/analyze-app-performance.md",
+ "redirect_url": "/windows/apps/publish/analyze-msi-exe/analyze-app-performance",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/managing-your-ad-campaign.md",
- "redirect_url": "/windows/uwp/monetize",
+ "source_path": "uwp/publish/msiexe/ratings-reviews-performance.md",
+ "redirect_url": "/windows/apps/publish/analyze-msi-exe/ratings-reviews-performance",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/about-house-ads.md",
- "redirect_url": "/windows/uwp/monetize",
+ "source_path": "uwp/publish/product-management.md",
+ "redirect_url": "/windows/apps/publish/product-management",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/about-community-ads.md",
- "redirect_url": "/windows/uwp/monetize",
+ "source_path": "uwp/publish/app-marketing-guidelines.md",
+ "redirect_url": "/windows/apps/publish/app-marketing-guidelines",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/common-questions.md",
- "redirect_url": "/windows/uwp/monetize",
+ "source_path": "uwp/publish/attract-customers-and-promote-your-apps.md",
+ "redirect_url": "/windows/apps/publish/attract-customers-and-promote-your-apps",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/tax-details-for-paid-apps.md",
- "redirect_url": "/partner-center/tax-details-marketplace",
+ "source_path": "uwp/publish/beta-testing-and-targeted-distribution.md",
+ "redirect_url": "/windows/apps/publish/beta-testing-and-targeted-distribution",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/getting-paid-apps.md",
- "redirect_url": "/partner-center/marketplace-get-paid",
+ "source_path": "uwp/publish/create-a-custom-app-promotion-campaign.md",
+ "redirect_url": "/windows/apps/publish/create-a-custom-app-promotion-campaign",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/setting-up-your-payout-account-and-tax-forms.md",
- "redirect_url": "/partner-center/set-up-your-payout-account ",
+ "source_path": "uwp/publish/create-customer-groups.md",
+ "redirect_url": "/windows/apps/publish/create-customer-groups",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/payout-summary.md",
- "redirect_url": "/partner-center/payout-statement",
+ "source_path": "uwp/publish/create-customer-segments.md",
+ "redirect_url": "/windows/apps/publish/create-customer-segments",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/understand-irs-tax-forms.md",
- "redirect_url": "/partner-center/understand-irs-tax-forms",
+ "source_path": "uwp/publish/create-known-user-groups.md",
+ "redirect_url": "/windows/apps/publish/create-known-user-groups",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/payment-thresholds-methods-and-timeframes.md",
- "redirect_url": "/partner-center/payment-thresholds-methods-timeframes",
+ "source_path": "uwp/publish/distribute-lob-apps-to-enterprises.md",
+ "redirect_url": "/windows/apps/publish/distribute-lob-apps-to-enterprises",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/mobile-operator-billing.md",
- "redirect_url": "/partner-center/mobile-operator-billing",
+ "source_path": "uwp/publish/download-analytic-reports.md",
+ "redirect_url": "/windows/apps/publish/download-analytic-reports",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/vat-info.md",
- "redirect_url": "/partner-center/vat-info",
+ "source_path": "uwp/publish/engage-with-your-customers.md",
+ "redirect_url": "/windows/apps/publish/engage-with-your-customers",
"redirect_document_id": false
},
{
- "source_path": "hub/apps/whats-new/build2020-docs.md",
- "redirect_url": "/windows/apps/whats-new/build2021-docs",
+ "source_path": "uwp/publish/feedback-report.md",
+ "redirect_url": "/windows/apps/publish/feedback-report",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/manage-account-settings-and-profile.md",
- "redirect_url": "/partner-center/partner-center-account-setup",
+ "source_path": "uwp/publish/generate-preinstall-packages-for-oems.md",
+ "redirect_url": "/windows/apps/publish/generate-preinstall-packages-for-oems",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/master-details.md",
- "redirect_url": "/windows/uwp/design/controls-and-patterns/list-details",
- "redirect_document_id": true
+ "source_path": "uwp/publish/generate-promotional-codes.md",
+ "redirect_url": "/windows/apps/publish/generate-promotional-codes",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/design/shell/tiles-and-notifications/send-local-toast-desktop.md",
- "redirect_url": "/windows/uwp/design/shell/tiles-and-notifications/send-local-toast",
+ "source_path": "uwp/publish/gradual-package-rollout.md",
+ "redirect_url": "/windows/apps/publish/gradual-package-rollout",
"redirect_document_id": false
},
{
- "source_path": "hub/nodejs/index.yml",
- "redirect_url": "/windows/dev-environment/javascript",
+ "source_path": "uwp/publish/health-report.md",
+ "redirect_url": "/windows/apps/publish/health-report",
"redirect_document_id": false
},
{
- "source_path": "hub/nodejs/beginners.md",
- "redirect_url": "/windows/dev-environment/javascript/nodejs-beginners-tutorial",
+ "source_path": "uwp/publish/in-app-ads.md",
+ "redirect_url": "/windows/apps/publish/in-app-ads",
"redirect_document_id": false
},
{
- "source_path": "hub/nodejs/setup-on-wsl2.md",
- "redirect_url": "/windows/dev-environment/javascript/nodejs-on-wsl",
+ "source_path": "uwp/publish/insights-report.md",
+ "redirect_url": "/windows/apps/publish/insights-report",
"redirect_document_id": false
},
{
- "source_path": "hub/nodejs/setup-on-windows.md",
- "redirect_url": "/windows/dev-environment/javascript/nodejs-on-windows",
+ "source_path": "uwp/publish/link-to-your-app.md",
+ "redirect_url": "/windows/apps/publish/link-to-your-app",
"redirect_document_id": false
},
{
- "source_path": "hub/nodejs/containers.md",
- "redirect_url": "/windows/wsl/tutorials/wsl-containers",
+ "source_path": "uwp/publish/make-your-app-easier-to-promote.md",
+ "redirect_url": "/windows/apps/publish/make-your-app-easier-to-promote",
"redirect_document_id": false
},
{
- "source_path": "hub/nodejs/web-frameworks.md",
- "redirect_url": "/windows/dev-environment/javascript",
+ "source_path": "uwp/publish/package-flights.md",
+ "redirect_url": "/windows/apps/publish/package-flights",
"redirect_document_id": false
},
{
- "source_path": "hub/android/react-native.md",
- "redirect_url": "/windows/dev-environment/javascript/react-native-for-android",
+ "source_path": "uwp/publish/put-apps-and-add-ons-on-sale.md",
+ "redirect_url": "/windows/apps/publish/put-apps-and-add-ons-on-sale",
"redirect_document_id": false
},
{
- "source_path": "hub/apps/features-and-technologies.md",
- "redirect_url": "/windows/apps/develop/index",
+ "source_path": "uwp/publish/ratings-and-reviews.md",
+ "redirect_url": "/windows/apps/publish/ratings-and-reviews",
"redirect_document_id": false
},
{
- "source_path": "hub/apps/develop/features-and-technologies.md",
- "redirect_url": "/windows/apps/develop/index",
+ "source_path": "uwp/publish/ratings-report.md",
+ "redirect_url": "/windows/apps/publish/ratings-report",
"redirect_document_id": false
},
{
- "source_path": "hub/apps/speech.md",
- "redirect_url": "/windows/apps/develop/speech",
- "redirect_document_id": true
+ "source_path": "uwp/publish/respond-to-customer-feedback.md",
+ "redirect_url": "/windows/apps/publish/respond-to-customer-feedback",
+ "redirect_document_id": false
},
{
- "source_path": "hub/apps/accessibility.md",
- "redirect_url": "/windows/apps/develop/accessibility",
- "redirect_document_id": true
+ "source_path": "uwp/publish/respond-to-customer-reviews.md",
+ "redirect_url": "/windows/apps/publish/respond-to-customer-reviews",
+ "redirect_document_id": false
},
{
- "source_path": "hub/apps/project-reunion/index.md",
- "redirect_url": "/windows/apps/windows-app-sdk/index",
+ "source_path": "uwp/publish/reviews-report.md",
+ "redirect_url": "/windows/apps/publish/reviews-report",
"redirect_document_id": false
},
{
- "source_path": "hub/apps/project-reunion/release-channels.md",
- "redirect_url": "/windows/apps/windows-app-sdk/release-channels",
+ "source_path": "uwp/publish/send-push-notifications-to-your-apps-customers.md",
+ "redirect_url": "/windows/apps/publish/send-push-notifications-to-your-apps-customers",
"redirect_document_id": false
},
{
- "source_path": "hub/apps/project-reunion/stable-channel.md",
- "redirect_url": "/windows/apps/windows-app-sdk/stable-channel",
+ "source_path": "uwp/publish/usage-report.md",
+ "redirect_url": "/windows/apps/publish/usage-report",
"redirect_document_id": false
},
{
- "source_path": "hub/apps/project-reunion/preview-channel.md",
- "redirect_url": "/windows/apps/windows-app-sdk/preview-channel",
+ "source_path": "uwp/publish/use-targeted-offers-to-maximize-engagement-and-conversions.md",
+ "redirect_url": "/windows/apps/publish/use-targeted-offers-to-maximize-engagement-and-conversions",
"redirect_document_id": false
},
{
- "source_path": "hub/apps/project-reunion/set-up-your-development-environment.md",
- "redirect_url": "/windows/apps/windows-app-sdk/set-up-your-development-environment",
+ "source_path": "uwp/publish/view-app-identity-details.md",
+ "redirect_url": "/windows/apps/publish/view-app-identity-details",
"redirect_document_id": false
},
{
- "source_path": "hub/apps/project-reunion/get-started-with-project-reunion.md",
- "redirect_url": "/windows/apps/windows-app-sdk",
+ "source_path": "uwp/publish/xbox-analytics-report.md",
+ "redirect_url": "/windows/apps/publish/xbox-analytics-report",
"redirect_document_id": false
},
{
- "source_path": "hub/apps/project-reunion/get-started.md",
- "redirect_url": "/windows/apps/windows-app-sdk",
+ "source_path": "hub/apps/publish/partner-center/associate-azure-ad-with-partner-center.md",
+ "redirect_url": "/windows/apps/publish/partner-center/associate-existing-azure-ad-tenant-with-partner-center-account",
"redirect_document_id": false
},
{
- "source_path": "hub/apps/windows-app-sdk/get-started.md",
- "redirect_url": "/windows/apps/windows-app-sdk",
+ "source_path": "hub/apps/publish/partner-center/add-users-groups-and-azure-ad-applications.md",
+ "redirect_url": "/windows/apps/publish/partner-center/overview-users-groups-azure-ad-applications",
"redirect_document_id": false
},
{
- "source_path": "hub/apps/project-reunion/update-existing-projects-to-the-latest-release.md",
- "redirect_url": "/windows/apps/windows-app-sdk/update-existing-projects-to-the-latest-release",
+ "source_path": "hub/apps/publish/partner-center/opening-a-developer-account.md",
+ "redirect_url": "/windows/apps/publish/partner-center/open-a-developer-account",
"redirect_document_id": false
},
{
- "source_path": "hub/apps/project-reunion/mrtcore/mrtcore-overview.md",
- "redirect_url": "/windows/apps/windows-app-sdk/mrtcore/mrtcore-overview",
+ "source_path": "hub/apps/publish/partner-center/set-custom-permissions-for-account-users.md",
+ "redirect_url": "/windows/apps/publish/partner-center/overview-of-roles-and-permissions-for-account-users",
"redirect_document_id": false
},
{
- "source_path": "hub/apps/project-reunion/dwritecore.md",
- "redirect_url": "/windows/apps/windows-app-sdk/dwritecore",
+ "source_path": "hub/package-manager/package/winget-validation.md",
+ "redirect_url": "/windows/package-manager/package/repository#validation-process",
"redirect_document_id": false
},
{
- "source_path": "hub/apps/project-reunion/applifecycle/applifecycle-instancing.md",
- "redirect_url": "/windows/apps/windows-app-sdk/applifecycle/applifecycle-instancing",
+ "source_path": "hub/package-manager/package/winget-validation-troubleshooter.md",
+ "redirect_url": "/windows/package-manager/package/repository#submission-troubleshooting",
"redirect_document_id": false
},
{
- "source_path": "hub/apps/project-reunion/applifecycle/applifecycle-rich-activation.md",
- "redirect_url": "/windows/apps/windows-app-sdk/applifecycle/applifecycle-rich-activation",
+ "source_path": "hub/package-manager/package/binary-validation-errors.md",
+ "redirect_url": "/windows/package-manager/package/repository#binary-validation-error",
"redirect_document_id": false
},
{
- "source_path": "hub/apps/project-reunion/deploy-apps-that-use-project-reunion.md",
- "redirect_url": "/windows/apps/windows-app-sdk/deploy-apps-that-use-the-windows-app-sdk",
+ "source_path": "hub/dev-environment/tutorials.md",
+ "redirect_url": "/windows/dev-environment",
"redirect_document_id": false
},
{
- "source_path": "hub/apps/project-reunion/deployment-architecture.md",
- "redirect_url": "/windows/apps/windows-app-sdk/deployment-architecture",
+ "source_path": "hub/dev-environment/dev-stories.md",
+ "redirect_url": "/windows/dev-environment",
"redirect_document_id": false
},
{
- "source_path": "hub/apps/project-reunion/deploy-packaged-apps.md",
- "redirect_url": "/windows/apps/windows-app-sdk/deploy-packaged-apps",
+ "source_path": "hub/dev-environment/tips.md",
+ "redirect_url": "/windows/dev-environment",
"redirect_document_id": false
},
{
- "source_path": "hub/apps/project-reunion/deploy-unpackaged-apps.md",
- "redirect_url": "/windows/apps/windows-app-sdk/deploy-unpackaged-apps",
+ "source_path": "hub/python/resources.md",
+ "redirect_url": "/windows/python/web-frameworks",
"redirect_document_id": false
},
{
- "source_path": "hub/apps/project-reunion/tutorial-unpackaged-deployment.md",
- "redirect_url": "/windows/apps/windows-app-sdk/tutorial-unpackaged-deployment",
+ "source_path": "hub/powertoys/reportbug.md",
+ "redirect_url": "https://github.com/microsoft/PowerToys/issues/new/choose",
"redirect_document_id": false
},
{
- "source_path": "hub/apps/project-reunion/check-project-reunion-versions.md",
- "redirect_url": "/windows/apps/windows-app-sdk/check-windows-app-sdk-versions",
+ "source_path": "hub/android/xamarin-forms.md",
+ "redirect_url": "/dotnet/maui/what-is-maui",
"redirect_document_id": false
},
{
- "source_path": "hub/apps/project-reunion/remove-project-reunion-versions.md",
- "redirect_url": "/windows/apps/windows-app-sdk/remove-windows-app-sdk-versions",
+ "source_path": "uwp/publish/store-app-quality.md",
+ "redirect_url": "/windows/apps/publish/store-app-quality",
"redirect_document_id": false
},
{
- "source_path": "hub/apps/get-started/build-apps-for-windows.md",
- "redirect_url": "/windows/apps/winui/winui3/create-your-first-winui3-app",
+ "source_path": "uwp/publish/store-developer-code-of-conduct.md",
+ "redirect_url": "/windows/apps/publish/store-developer-code-of-conduct",
"redirect_document_id": false
},
{
- "source_path": "hub/apps/winui/winui3-winui2-comparison.md",
- "redirect_url": "/windows/apps/winui/",
+ "source_path": "uwp/publish/store-policies-and-code-of-conduct.md",
+ "redirect_url": "/windows/apps/publish/store-policies-and-code-of-conduct",
"redirect_document_id": false
},
{
- "source_path": "hub/apps/winui/winui3/desktop-build-basic-winui3-app.md",
- "redirect_url": "/windows/apps/winui/winui3/desktop-winui3-app-with-basic-interop",
+ "source_path": "uwp/publish/store-policies-change-history.md",
+ "redirect_url": "/windows/apps/publish/store-policies-change-history",
"redirect_document_id": false
},
{
- "source_path": "hub/apps/winui/reference/iwindownative.md",
- "redirect_url": "/windows/windows-app-sdk/api/win32/microsoft.ui.xaml.window/nn-microsoft-ui-xaml-window-iwindownative",
+ "source_path": "uwp/publish/store-policies.md",
+ "redirect_url": "/windows/apps/publish/store-policies",
"redirect_document_id": false
},
{
- "source_path": "hub/apps/winui/reference/iwindownative-windowhandle.md",
- "redirect_url": "/windows/windows-app-sdk/api/win32/microsoft.ui.xaml.window/nf-microsoft-ui-xaml-window-iwindownative-get_windowhandle",
+ "source_path": "uwp/publish/store-policy-archive/store-policy-7-11.md",
+ "redirect_url": "/windows/apps/publish/store-policy-archive/store-policy-7-11",
"redirect_document_id": false
},
{
- "source_path": "hub/apps/winui/winui3/release-notes/index.md",
- "redirect_url": "/windows/apps/winui/winui3/release-notes/release-notes-08-preview",
+ "source_path": "uwp/publish/store-policy-archive/store-policy-7-12.md",
+ "redirect_url": "/windows/apps/publish/store-policy-archive/store-policy-7-12",
"redirect_document_id": false
},
{
- "source_path": "hub/apps/winui/winui3/get-started-winui3-for-desktop.md",
- "redirect_url": "/windows/apps/winui/winui3/create-your-first-winui3-app",
+ "source_path": "uwp/publish/store-policy-archive/store-policy-7-13.md",
+ "redirect_url": "/windows/apps/publish/store-policy-archive/store-policy-7-13",
"redirect_document_id": false
},
{
- "source_path": "hub/apps/winui/winui3/get-started-winui3-for-uwp.md",
- "redirect_url": "/windows/apps/winui/winui3/create-your-first-winui3-app",
+ "source_path": "uwp/publish/store-policy-archive/store-policy-7-14.md",
+ "redirect_url": "/windows/apps/publish/store-policy-archive/store-policy-7-14",
"redirect_document_id": false
},
{
- "source_path": "hub/apps/winui/winui2/winui-2.6.md",
- "redirect_url": "/windows/apps/winui/winui2/release-notes/winui-2.6",
+ "source_path": "uwp/publish/store-policy-archive/store-policy-7-15.md",
+ "redirect_url": "/windows/apps/publish/store-policy-archive/store-policy-7-15",
"redirect_document_id": false
},
{
- "source_path": "hub/apps/winui/winui3/cs-interop-apis/index.md",
- "redirect_url": "/windows/apps/api-reference/cs-interop-apis/",
+ "source_path": "uwp/publish/store-policy-archive/store-policy-7-16.md",
+ "redirect_url": "/windows/apps/publish/store-policy-archive/store-policy-7-16",
"redirect_document_id": false
},
{
- "source_path": "hub/apps/winui/winui3/cs-interop-apis/microsoft.ui/microsoft.ui.md",
- "redirect_url": "/windows/apps/api-reference/cs-interop-apis/microsoft.ui/microsoft.ui",
+ "source_path": "uwp/publish/store-policy-archive/store-policy-7-6.md",
+ "redirect_url": "/windows/apps/publish/store-policy-archive/store-policy-7-6",
"redirect_document_id": false
},
{
- "source_path": "hub/apps/winui/winui3/cs-interop-apis/microsoft.ui/microsoft.ui.win32interop.getdisplayidfrommonitor.md",
- "redirect_url": "/windows/apps/api-reference/cs-interop-apis/microsoft.ui/microsoft.ui.win32interop.getdisplayidfrommonitor",
+ "source_path": "uwp/publish/store-policy-archive/store-policy-7-7.md",
+ "redirect_url": "/windows/apps/publish/store-policy-archive/store-policy-7-7",
"redirect_document_id": false
},
{
- "source_path": "hub/apps/winui/winui3/cs-interop-apis/microsoft.ui/microsoft.ui.win32interop.geticonfromiconid.md",
- "redirect_url": "/windows/apps/api-reference/cs-interop-apis/microsoft.ui/microsoft.ui.win32interop.geticonfromiconid",
+ "source_path": "uwp/publish/index.md",
+ "redirect_url": "/windows/apps/publish/",
"redirect_document_id": false
},
{
- "source_path": "hub/apps/winui/winui3/cs-interop-apis/microsoft.ui/microsoft.ui.win32interop.geticonidfromicon.md",
- "redirect_url": "/windows/apps/api-reference/cs-interop-apis/microsoft.ui/microsoft.ui.win32interop.geticonidfromicon",
+ "source_path": "hub/apps/publish/update-your-app.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msi/publish-update-to-your-app-on-store",
"redirect_document_id": false
},
{
- "source_path": "hub/apps/winui/winui3/cs-interop-apis/microsoft.ui/microsoft.ui.win32interop.getmonitorfromdisplayid.md",
- "redirect_url": "/windows/apps/api-reference/cs-interop-apis/microsoft.ui/microsoft.ui.win32interop.getmonitorfromdisplayid",
+ "source_path": "uwp/data-access/mysql-databases.md",
+ "redirect_url": "/windows/apps/develop/data-access/mysql-database",
"redirect_document_id": false
},
{
- "source_path": "hub/apps/winui/winui3/cs-interop-apis/microsoft.ui/microsoft.ui.win32interop.getwindowfromwindowid.md",
- "redirect_url": "/windows/apps/api-reference/cs-interop-apis/microsoft.ui/microsoft.ui.win32interop.getwindowfromwindowid",
+ "source_path": "uwp/data-access/mongo-db-databases.md",
+ "redirect_url": "/windows/apps/develop/data-access/mongodb-database",
"redirect_document_id": false
},
{
- "source_path": "hub/apps/winui/winui3/cs-interop-apis/microsoft.ui/microsoft.ui.win32interop.getwindowidfromwindow.md",
- "redirect_url": "/windows/apps/api-reference/cs-interop-apis/microsoft.ui/microsoft.ui.win32interop.getwindowidfromwindow",
+ "source_path": "hub/android/xamarin-android.md",
+ "redirect_url": "/dotnet/maui/migration/",
"redirect_document_id": false
},
{
- "source_path": "hub/apps/winui/winui3/cs-interop-apis/microsoft.ui/microsoft.ui.win32interop.md",
- "redirect_url": "/windows/apps/api-reference/cs-interop-apis/microsoft.ui/microsoft.ui.win32interop",
+ "source_path": "hub/apps/publish/analytics.md",
+ "redirect_url": "/partner-center/analyze-app-performance",
"redirect_document_id": false
},
{
- "source_path": "hub/apps/desktop/choose-your-platform.md",
- "redirect_url": "/windows/apps/desktop#choose-your-app-type",
+ "source_path": "hub/apps/publish/acquisitions-report.md",
+ "redirect_url": "/partner-center/acquisitions-report",
"redirect_document_id": false
},
{
- "source_path": "hub/apps/10x/faq.md",
- "redirect_url": "/windows/apps",
+ "source_path": "hub/apps/publish/add-on-acquisitions-report.md",
+ "redirect_url": "/partner-center/add-on-acquisitions-report",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/accessibility/accessibility-checklist.md",
- "redirect_url": "/windows/apps/design/accessibility/accessibility-checklist",
+ "source_path": "hub/apps/publish/usage-report.md",
+ "redirect_url": "/partner-center/usage-report",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/accessibility/accessibility-in-the-store.md",
- "redirect_url": "/windows/apps/design/accessibility/accessibility-in-the-store",
+ "source_path": "hub/apps/publish/health-report.md",
+ "redirect_url": "/partner-center/health-report",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/accessibility/accessibility-overview.md",
- "redirect_url": "/windows/apps/design/accessibility/accessibility-overview",
+ "source_path": "hub/apps/publish/ratings-and-reviews.md",
+ "redirect_url": "/partner-center/ratings-and-reviews",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/accessibility/accessibility-testing.md",
- "redirect_url": "/windows/apps/design/accessibility/accessibility-testing",
+ "source_path": "hub/apps/publish/ratings-report.md",
+ "redirect_url": "/partner-center/ratings-report",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/accessibility/accessibility.md",
- "redirect_url": "/windows/apps/design/accessibility/accessibility",
+ "source_path": "hub/apps/publish/reviews-report.md",
+ "redirect_url": "/partner-center/reviews-report",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/accessibility/accessible-text-requirements.md",
- "redirect_url": "/windows/apps/design/accessibility/accessible-text-requirements",
+ "source_path": "hub/apps/publish/feedback-report.md",
+ "redirect_url": "/partner-center/feedback-report",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/accessibility/basic-accessibility-information.md",
- "redirect_url": "/windows/apps/design/accessibility/basic-accessibility-information",
+ "source_path": "hub/apps/publish/xbox-analytics-report.md",
+ "redirect_url": "/partner-center/xbox-analytics-report",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/accessibility/control-patterns-and-interfaces.md",
- "redirect_url": "/windows/apps/design/accessibility/control-patterns-and-interfaces",
+ "source_path": "hub/apps/publish/insights-report.md",
+ "redirect_url": "/partner-center/insights-report",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/accessibility/custom-automation-peers.md",
- "redirect_url": "/windows/apps/design/accessibility/custom-automation-peers",
+ "source_path": "hub/apps/publish/advertising-performance-report.md",
+ "redirect_url": "/partner-center/advertising-performance-report",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/accessibility/designing-inclusive-software.md",
- "redirect_url": "/windows/apps/design/accessibility/designing-inclusive-software",
+ "source_path": "hub/apps/publish/download-analytic-reports.md",
+ "redirect_url": "/partner-center/download-analytic-reports",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/accessibility/developing-inclusive-windows-apps.md",
- "redirect_url": "/windows/apps/design/accessibility/developing-inclusive-windows-apps",
+ "source_path": "hub/apps/distribute-through-store/best-practices-for-win32-app-distribution.md",
+ "redirect_url": "/windows/apps/distribute-through-store/how-to-distribute-your-win32-app-through-microsoft-store",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/accessibility/high-contrast-themes.md",
- "redirect_url": "/windows/apps/design/accessibility/high-contrast-themes",
+ "source_path": "hub/apps/develop/settings/index.md",
+ "redirect_url": "/windows/apps/develop/settings/settings-windows-11",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/accessibility/keyboard-accessibility.md",
- "redirect_url": "/windows/apps/design/accessibility/keyboard-accessibility",
+ "source_path": "hub/dev-environment/javascript/windows-or-wsl.md",
+ "redirect_url": "hub/dev-environment/javascript/nodejs-overview.md",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/accessibility/landmarks-and-headings.md",
- "redirect_url": "/windows/apps/design/accessibility/landmarks-and-headings",
+ "source_path": "hub/apps/windows-dotnet-maui/dall-e-maui-windows.md",
+ "redirect_url": "/windows/ai/samples/dall-e-maui-windows",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/accessibility/practices-to-avoid.md",
- "redirect_url": "/windows/apps/design/accessibility/practices-to-avoid",
+ "source_path": "hub/apps/windows-dotnet-maui/tutorial-maui-ai.md",
+ "redirect_url": "/windows/ai/samples/tutorial-maui-ai",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/accessibility/system-button-narration.md",
- "redirect_url": "/windows/apps/design/accessibility/system-button-narration",
+ "source_path": "hub/powertoys/paste-as-plain-text.md",
+ "redirect_url": "/windows/powertoys/advanced-paste",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/app-settings/guidelines-for-app-settings.md",
- "redirect_url": "/windows/apps/design/app-settings/guidelines-for-app-settings",
+ "source_path": "hub/apps/get-started/dev-options.md",
+ "redirect_url": "/windows/apps/get-started/",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/app-settings/store-and-retrieve-app-data.md",
- "redirect_url": "/windows/apps/design/app-settings/store-and-retrieve-app-data",
+ "source_path": "uwp/security/microsoft-passport.md",
+ "redirect_url": "/windows/apps/develop/security/windows-hello",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/basics/commanding-basics.md",
- "redirect_url": "/windows/apps/design/basics/commanding-basics",
+ "source_path": "uwp/security/microsoft-passport-login.md",
+ "redirect_url": "/windows/apps/develop/security/windows-hello-login",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/basics/content-basics.md",
- "redirect_url": "/windows/apps/design/basics/content-basics",
+ "source_path": "uwp/security/microsoft-passport-login-auth-service.md",
+ "redirect_url": "/windows/apps/develop/security/windows-hello-auth-service",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/basics/design-and-ui-intro.md",
- "redirect_url": "/windows/apps/design/basics/design-and-ui-intro",
+ "source_path": "hub/apps/develop/security-and-identity.md",
+ "redirect_url": "/windows/apps/develop/security/",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/basics/index.md",
- "redirect_url": "/windows/apps/design/basics/index",
+ "source_path": "hub/apps/publish/msstore-dev-cli/apps-command.md",
+ "redirect_url": "/windows/apps/publish/msstore-dev-cli/commands",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/basics/navigate-between-two-pages.md",
- "redirect_url": "/windows/apps/design/basics/navigate-between-two-pages",
+ "source_path": "hub/apps/publish/msstore-dev-cli/apps-get-command.md",
+ "redirect_url": "/windows/apps/publish/msstore-dev-cli/commands",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/basics/navigation-basics.md",
- "redirect_url": "/windows/apps/design/basics/navigation-basics",
+ "source_path": "hub/apps/publish/msstore-dev-cli/apps-list-command.md",
+ "redirect_url": "/windows/apps/publish/msstore-dev-cli/commands",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/basics/navigation-history-and-backwards-navigation.md",
- "redirect_url": "/windows/apps/design/basics/navigation-history-and-backwards-navigation",
+ "source_path": "hub/apps/publish/msstore-dev-cli/ci-cd-environments.md",
+ "redirect_url": "/windows/apps/publish/msstore-dev-cli/commands",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/basics/xaml-basics-adaptive-layout.md",
- "redirect_url": "/windows/apps/design/basics/xaml-basics-adaptive-layout",
+ "source_path": "hub/apps/publish/msstore-dev-cli/info-command.md",
+ "redirect_url": "/windows/apps/publish/msstore-dev-cli/commands",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/basics/xaml-basics-style.md",
- "redirect_url": "/windows/apps/design/basics/xaml-basics-style",
+ "source_path": "hub/apps/publish/msstore-dev-cli/init-command.md",
+ "redirect_url": "/windows/apps/publish/msstore-dev-cli/commands",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/basics/xaml-basics-ui.md",
- "redirect_url": "/windows/apps/design/basics/xaml-basics-ui",
+ "source_path": "hub/apps/publish/msstore-dev-cli/install.md",
+ "redirect_url": "/windows/apps/publish/msstore-dev-cli/commands",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/app-bars.md",
- "redirect_url": "/windows/apps/design/controls/command-bar",
+ "source_path": "hub/apps/publish/msstore-dev-cli/package-command.md",
+ "redirect_url": "/windows/apps/publish/msstore-dev-cli/commands",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/auto-suggest-box.md",
- "redirect_url": "/windows/apps/design/controls/auto-suggest-box",
+ "source_path": "hub/apps/publish/msstore-dev-cli/publish-command.md",
+ "redirect_url": "/windows/apps/publish/msstore-dev-cli/commands",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/buttons.md",
- "redirect_url": "/windows/apps/design/controls/buttons",
+ "source_path": "hub/apps/publish/msstore-dev-cli/reconfigure-command.md",
+ "redirect_url": "/windows/apps/publish/msstore-dev-cli/commands",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/calendar-date-picker.md",
- "redirect_url": "/windows/apps/design/controls/calendar-date-picker",
+ "source_path": "hub/apps/publish/msstore-dev-cli/settings-command.md",
+ "redirect_url": "/windows/apps/publish/msstore-dev-cli/commands",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/calendar-view.md",
- "redirect_url": "/windows/apps/design/controls/calendar-view",
+ "source_path": "hub/apps/publish/msstore-dev-cli/settings-setpdn-command.md",
+ "redirect_url": "/windows/apps/publish/msstore-dev-cli/commands",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/checkbox.md",
- "redirect_url": "/windows/apps/design/controls/checkbox",
+ "source_path": "hub/apps/publish/msstore-dev-cli/submission-command.md",
+ "redirect_url": "/windows/apps/publish/msstore-dev-cli/commands",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/collection-commanding.md",
- "redirect_url": "/windows/apps/design/controls/collection-commanding",
+ "source_path": "hub/apps/publish/msstore-dev-cli/submission-delete-command.md",
+ "redirect_url": "/windows/apps/publish/msstore-dev-cli/commands",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/color-picker.md",
- "redirect_url": "/windows/apps/design/controls/color-picker",
+ "source_path": "hub/apps/publish/msstore-dev-cli/submission-get-command.md",
+ "redirect_url": "/windows/apps/publish/msstore-dev-cli/commands",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/combo-box.md",
- "redirect_url": "/windows/apps/design/controls/combo-box",
+ "source_path": "hub/apps/publish/msstore-dev-cli/submission-getListingAssets-command.md",
+ "redirect_url": "/windows/apps/publish/msstore-dev-cli/commands",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/command-bar-flyout.md",
- "redirect_url": "/windows/apps/design/controls/command-bar-flyout",
+ "source_path": "hub/apps/publish/msstore-dev-cli/submission-poll-command.md",
+ "redirect_url": "/windows/apps/publish/msstore-dev-cli/commands",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/commanding.md",
- "redirect_url": "/windows/apps/design/controls/commanding",
+ "source_path": "hub/apps/publish/msstore-dev-cli/submission-publish-command.md",
+ "redirect_url": "/windows/apps/publish/msstore-dev-cli/commands",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/contact-card.md",
- "redirect_url": "/windows/apps/design/controls/contact-card",
+ "source_path": "hub/apps/publish/msstore-dev-cli/submission-status-command.md",
+ "redirect_url": "/windows/apps/publish/msstore-dev-cli/commands",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/content-links.md",
- "redirect_url": "/windows/apps/design/controls/content-links",
+ "source_path": "hub/apps/publish/msstore-dev-cli/submission-update-command.md",
+ "redirect_url": "/windows/apps/publish/msstore-dev-cli/commands",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/control-templates.md",
- "redirect_url": "/windows/apps/design/style/xaml-control-templates",
+ "source_path": "hub/apps/publish/msstore-dev-cli/submission-updateMetadata-command.md",
+ "redirect_url": "/windows/apps/publish/msstore-dev-cli/commands",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/controls-and-events-intro.md",
- "redirect_url": "/windows/apps/design/controls/controls-and-events-intro",
+ "source_path": "hub/apps/publish/publish-your-app/add-additional-information.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msix/add-additional-information",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/custom-transport-controls.md",
- "redirect_url": "/windows/apps/design/controls/custom-transport-controls",
+ "source_path": "hub/apps/publish/publish-your-app/add-and-edit-store-listing-info.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msix/add-and-edit-store-listing-info",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/data-template-selector.md",
- "redirect_url": "/windows/apps/design/controls/data-template-selector",
+ "source_path": "hub/apps/publish/publish-your-app/age-ratings.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msix/age-ratings",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/date-and-time.md",
- "redirect_url": "/windows/apps/design/controls/date-and-time",
+ "source_path": "hub/apps/publish/publish-your-app/app-certification-process.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msix/app-certification-process",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/date-picker.md",
- "redirect_url": "/windows/apps/design/controls/date-picker",
+ "source_path": "hub/apps/publish/publish-your-app/app-package-management.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msix/app-package-management",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/dialogs-and-flyouts/dialogs.md",
- "redirect_url": "/windows/apps/design/controls/dialogs-and-flyouts/dialogs",
+ "source_path": "hub/apps/publish/publish-your-app/app-package-requirements.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msix/app-package-requirements",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/dialogs-and-flyouts/flyouts.md",
- "redirect_url": "/windows/apps/design/controls/dialogs-and-flyouts/flyouts",
+ "source_path": "hub/apps/publish/publish-your-app/app-submission-control.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msix/manage-submission-options#app-submission-controls",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/dialogs-and-flyouts/index.md",
- "redirect_url": "/windows/apps/design/controls/dialogs-and-flyouts/index",
+ "source_path": "hub/apps/publish/publish-your-app/avoid-common-certification-failures.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msix/resolve-submission-errors#avoid-common-certification-failures",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/dialogs-and-flyouts/teaching-tip.md",
- "redirect_url": "/windows/apps/design/controls/dialogs-and-flyouts/teaching-tip",
+ "source_path": "hub/apps/publish/publish-your-app/categories-and-subcategories.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msix/categories-and-subcategories",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/flipview.md",
- "redirect_url": "/windows/apps/design/controls/flipview",
+ "source_path": "hub/apps/publish/publish-your-app/create-app-store-listing.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msix/create-app-store-listing",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/forms.md",
- "redirect_url": "/windows/apps/design/controls/forms",
+ "source_path": "hub/apps/publish/publish-your-app/create-app-submission.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msix/create-app-submission",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/hyperlinks.md",
- "redirect_url": "/windows/apps/design/controls/hyperlinks",
+ "source_path": "hub/apps/publish/publish-your-app/create-platform-specific-store-listings.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msix/create-app-store-listing",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/images-imagebrushes.md",
- "redirect_url": "/windows/apps/design/controls/images-imagebrushes",
+ "source_path": "hub/apps/publish/publish-your-app/device-families.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msix/upload-app-packages#device-family-availability",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/index.md",
- "redirect_url": "/windows/apps/design/controls/index",
+ "source_path": "hub/apps/publish/publish-your-app/enter-app-properties.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msix/enter-app-properties",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/infobar.md",
- "redirect_url": "/windows/apps/design/controls/infobar",
+ "source_path": "hub/apps/publish/publish-your-app/import-and-export-store-listings.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msix/import-and-export-store-listings",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/inking-controls.md",
- "redirect_url": "/windows/apps/design/controls/inking-controls",
+ "source_path": "hub/apps/publish/publish-your-app/manage-submission-options.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msix/manage-submission-options",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/inverted-lists.md",
- "redirect_url": "/windows/apps/design/controls/inverted-lists",
+ "source_path": "hub/apps/publish/publish-your-app/manual-package-validation.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msi/manual-package-validation",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/item-containers-templates.md",
- "redirect_url": "/windows/apps/design/controls/item-containers-templates",
+ "source_path": "hub/apps/publish/publish-your-app/market-selection.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msix/market-selection",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/item-templates-gridview.md",
- "redirect_url": "/windows/apps/design/controls/item-templates-gridview",
+ "source_path": "hub/apps/publish/publish-your-app/notes-for-certification.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msix/manage-submission-options#notes-for-certification",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/item-templates-listview.md",
- "redirect_url": "/windows/apps/design/controls/item-templates-listview",
+ "source_path": "hub/apps/publish/publish-your-app/overview.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msix/overview",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/items-repeater.md",
- "redirect_url": "/windows/apps/design/controls/items-repeater",
+ "source_path": "hub/apps/publish/publish-your-app/package-validation-pre-check.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msi/package-validation-pre-check",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/labels.md",
- "redirect_url": "/windows/apps/design/controls/labels",
+ "source_path": "hub/apps/publish/publish-your-app/package-version-numbering.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msix/app-package-requirements#package-version-numbering",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/list-details.md",
- "redirect_url": "/windows/apps/design/controls/list-details",
+ "source_path": "hub/apps/publish/publish-your-app/price-and-availability.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msix/price-and-availability",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/lists.md",
- "redirect_url": "/windows/apps/design/controls/lists",
+ "source_path": "hub/apps/publish/publish-your-app/product-declarations.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msix/product-declarations",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/listview-and-gridview.md",
- "redirect_url": "/windows/apps/design/controls/listview-and-gridview",
+ "source_path": "hub/apps/publish/publish-your-app/publish-update-to-your-app-on-store.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msix/publish-update-to-your-app-on-store",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/listview-filtering.md",
- "redirect_url": "/windows/apps/design/controls/listview-filtering",
+ "source_path": "hub/apps/publish/publish-your-app/release-schedule.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msix/schedule-pricing-changes#configure-precise-release-scheduling",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/media-playback.md",
- "redirect_url": "/windows/apps/design/controls/media-playback",
+ "source_path": "hub/apps/publish/publish-your-app/resolve-submission-errors.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msix/resolve-submission-errors",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/menus.md",
- "redirect_url": "/windows/apps/design/controls/menus",
+ "source_path": "hub/apps/publish/publish-your-app/schedule-pricing-changes.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msix/schedule-pricing-changes",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/navigationview.md",
- "redirect_url": "/windows/apps/design/controls/navigationview",
+ "source_path": "hub/apps/publish/publish-your-app/screenshots-and-images.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msix/screenshots-and-images",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/nested-ui.md",
- "redirect_url": "/windows/apps/design/controls/nested-ui",
+ "source_path": "hub/apps/publish/publish-your-app/support-info.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msix/support-info",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/number-box.md",
- "redirect_url": "/windows/apps/design/controls/number-box",
+ "source_path": "hub/apps/publish/publish-your-app/supported-languages.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msix/app-package-requirements#supported-languages",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/password-box.md",
- "redirect_url": "/windows/apps/design/controls/password-box",
+ "source_path": "hub/apps/publish/publish-your-app/system-requirements.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msix/system-requirements",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/person-picture.md",
- "redirect_url": "/windows/apps/design/controls/person-picture",
+ "source_path": "hub/apps/publish/publish-your-app/upload-app-packages.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msix/upload-app-packages",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/pivot.md",
- "redirect_url": "/windows/apps/design/controls/pivot",
+ "source_path": "hub/apps/publish/publish-your-app/visibility-options.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msix/visibility-options",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/progress-controls.md",
- "redirect_url": "/windows/apps/design/controls/progress-controls",
+ "source_path": "hub/apps/publish/publish-your-app/reserve-your-apps-name.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msix/reserve-your-apps-name",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/pull-to-refresh.md",
- "redirect_url": "/windows/apps/design/controls/pull-to-refresh",
+ "source_path": "hub/apps/publish/publish-your-app/turn-your-website-pwa.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/pwa/turn-your-website-pwa",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/radio-button.md",
- "redirect_url": "/windows/apps/design/controls/radio-button",
+ "source_path": "hub/apps/publish/publish-your-app/write-great-app-description.md",
+ "redirect_url": "/windows/apps/publish/publish-your-app/msix/write-great-app-description",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/rating.md",
- "redirect_url": "/windows/apps/design/controls/rating",
+ "source_path": "hub/apps/publish/partner-center/manage-app-name-reservations.md",
+ "redirect_url": "/windows/apps/publish/partner-center/msix/manage-app-name-reservations",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/resourcedictionary-and-xaml-resource-references.md",
- "redirect_url": "/windows/apps/design/style/xaml-resource-dictionary",
+ "source_path": "hub/apps/publish/publish-your-app/msix/overview.md",
+ "redirect_url": "/windows/apps/publish/",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/rich-edit-box.md",
- "redirect_url": "/windows/apps/design/controls/rich-edit-box",
+ "source_path": "hub/apps/publish/publish-your-app/msi/overview.md",
+ "redirect_url": "/windows/apps/publish/",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/rich-text-block.md",
- "redirect_url": "/windows/apps/design/controls/rich-text-block",
+ "source_path": "hub/apps/publish/publish-your-app/pwa/overview.md",
+ "redirect_url": "/windows/apps/publish/",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/scroll-controls.md",
- "redirect_url": "/windows/apps/design/controls/scroll-controls",
+ "source_path": "hub/apps/design/shell/tiles-and-notifications/adaptive-tiles-schema.md",
+ "redirect_url": "/windows/uwp/launch-resume/adaptive-tiles-schema",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/selection-modes.md",
- "redirect_url": "/windows/apps/design/controls/selection-modes",
+ "source_path": "hub/apps/design/shell/tiles-and-notifications/chaseable-tile-notifications.md",
+ "redirect_url": "/windows/uwp/launch-resume/chaseable-tile-notifications",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/semantic-zoom.md",
- "redirect_url": "/windows/apps/design/controls/semantic-zoom",
+ "source_path": "hub/apps/design/shell/tiles-and-notifications/create-adaptive-tiles.md",
+ "redirect_url": "/windows/uwp/launch-resume/create-adaptive-tiles",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/shapes.md",
- "redirect_url": "/windows/apps/design/controls/shapes",
+ "source_path": "hub/apps/design/shell/tiles-and-notifications/creating-tiles.md",
+ "redirect_url": "/windows/uwp/launch-resume/creating-tiles",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/slider.md",
- "redirect_url": "/windows/apps/design/controls/slider",
+ "source_path": "hub/apps/design/shell/tiles-and-notifications/primary-tile-apis.md",
+ "redirect_url": "/windows/uwp/launch-resume/primary-tile-apis",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/split-view.md",
- "redirect_url": "/windows/apps/design/controls/split-view",
+ "source_path": "hub/apps/design/shell/tiles-and-notifications/secondary-tiles-guidance.md",
+ "redirect_url": "/windows/uwp/launch-resume/secondary-tiles-guidance",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/swipe.md",
- "redirect_url": "/windows/apps/design/controls/swipe",
+ "source_path": "hub/apps/design/shell/tiles-and-notifications/secondary-tiles-pin-to-taskbar.md",
+ "redirect_url": "/windows/uwp/launch-resume/secondary-tiles-pin-to-taskbar",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/tab-view.md",
- "redirect_url": "/windows/apps/design/controls/tab-view",
+ "source_path": "hub/apps/design/shell/tiles-and-notifications/secondary-tiles-pinning.md",
+ "redirect_url": "/windows/uwp/launch-resume/secondary-tiles-pinning",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/text-block.md",
- "redirect_url": "/windows/apps/design/controls/text-block",
+ "source_path": "hub/apps/design/shell/tiles-and-notifications/secondary-tiles.md",
+ "redirect_url": "/windows/uwp/launch-resume/secondary-tiles",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/text-box.md",
- "redirect_url": "/windows/apps/design/controls/text-box",
+ "source_path": "hub/apps/design/shell/tiles-and-notifications/sending-a-local-tile-notification.md",
+ "redirect_url": "/windows/uwp/launch-resume/sending-a-local-tile-notification",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/text-controls.md",
- "redirect_url": "/windows/apps/design/controls/text-controls",
+ "source_path": "hub/apps/design/shell/tiles-and-notifications/special-tile-templates-catalog.md",
+ "redirect_url": "/windows/uwp/launch-resume/special-tile-templates-catalog",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/text-handwriting-view.md",
- "redirect_url": "/windows/apps/design/controls/text-handwriting-view",
+ "source_path": "hub/apps/design/shell/tiles-and-notifications/tile-schema.md",
+ "redirect_url": "/windows/uwp/launch-resume/tile-schema",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/time-picker.md",
- "redirect_url": "/windows/apps/design/controls/time-picker",
+ "source_path": "hub/apps/design/shell/tiles-and-notifications/tile-toast-language-scale-contrast.md",
+ "redirect_url": "/windows/uwp/launch-resume/tile-toast-language-scale-contrast",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/toggles.md",
- "redirect_url": "/windows/apps/design/controls/toggles",
+ "source_path": "hub/apps/design/shell/tiles-and-notifications/index.md",
+ "redirect_url": "/windows/uwp/launch-resume/creating-tiles",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/tooltips.md",
- "redirect_url": "/windows/apps/design/controls/tooltips",
+ "source_path": "uwp/security/fingerprint-biometrics.md",
+ "redirect_url": "/windows/apps/develop/security/fingerprint-biometrics",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/tree-view.md",
- "redirect_url": "/windows/apps/design/controls/tree-view",
+ "source_path": "uwp/security/smart-cards.md",
+ "redirect_url": "/windows/apps/develop/security/smart-cards",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/two-pane-view.md",
- "redirect_url": "/windows/apps/design/controls/two-pane-view",
+ "source_path": "uwp/security/credential-locker.md",
+ "redirect_url": "/windows/apps/develop/security/credential-locker",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/web-view.md",
- "redirect_url": "/windows/apps/design/controls/web-view",
+ "source_path": "uwp/devices-sensors/printing-and-scanning.md",
+ "redirect_url": "/windows/apps/develop/devices-sensors/printing-and-scanning",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/xaml-styles.md",
- "redirect_url": "/windows/apps/design/style/xaml-styles",
+ "source_path": "uwp/devices-sensors/print-from-your-app.md",
+ "redirect_url": "/windows/apps/develop/devices-sensors/print-from-your-app",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/xaml-theme-resources.md",
- "redirect_url": "/windows/apps/design/style/xaml-theme-resources",
+ "source_path": "uwp/devices-sensors/customize-the-print-preview-ui.md",
+ "redirect_url": "/windows/apps/develop/devices-sensors/customize-the-print-preview-ui",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/devices/designing-for-MR.md",
- "redirect_url": "/windows/apps/design/devices/designing-for-MR",
+ "source_path": "uwp/devices-sensors/scan-from-your-app.md",
+ "redirect_url": "/windows/apps/develop/devices-sensors/scan-from-your-app",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/devices/designing-for-tv.md",
- "redirect_url": "/windows/apps/design/devices/designing-for-tv",
+ "source_path": "hub/apps/design/style/index.md",
+ "redirect_url": "/windows/apps/design",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/devices/index.md",
- "redirect_url": "/windows/apps/design/devices/index",
+ "source_path": "hub/apps/design/signature-experiences/design-principles.md",
+ "redirect_url": "/windows/apps/design",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/downloads/index.md",
- "redirect_url": "/windows/apps/design/downloads/index",
+ "source_path": "hub/apps/design/signature-experiences/signature-experiences.md",
+ "redirect_url": "/windows/apps/design",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/globalizing/adjust-layout-and-fonts--and-support-rtl.md",
- "redirect_url": "/windows/apps/design/globalizing/adjust-layout-and-fonts--and-support-rtl",
+ "source_path": "hub/apps/design/style/color.md",
+ "redirect_url": "/windows/apps/design/signature-experiences/color",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/globalizing/design-for-bidi-text.md",
- "redirect_url": "/windows/apps/design/globalizing/design-for-bidi-text",
+ "source_path": "hub/apps/design/style/typography.md",
+ "redirect_url": "/windows/apps/design/signature-experiences/typography",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/globalizing/glob-numeralsystem-values.md",
- "redirect_url": "/windows/apps/design/globalizing/glob-numeralsystem-values",
+ "source_path": "hub/apps/design/motion/index.md",
+ "redirect_url": "/windows/apps/design/signature-experiences/motion",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/globalizing/globalizing-portal.md",
- "redirect_url": "/windows/apps/design/globalizing/globalizing-portal",
+ "source_path": "hub/dev-home/project-ironsides.md",
+ "redirect_url": "/windows/dev-home/#experimental-features",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/globalizing/guidelines-and-checklist-for-globalizing-your-app.md",
- "redirect_url": "/windows/apps/design/globalizing/guidelines-and-checklist-for-globalizing-your-app",
+ "source_path": "hub/dev-home/dev-diagnostics.md",
+ "redirect_url": "/windows/dev-home/#experimental-features",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/globalizing/japanese-era-change.md",
- "redirect_url": "/windows/apps/design/globalizing/japanese-era-change",
+ "source_path": "hub/dev-home/quickstart-playground.md",
+ "redirect_url": "/windows/dev-home/#experimental-features",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/globalizing/loc-international-fonts.md",
- "redirect_url": "/windows/apps/design/globalizing/loc-international-fonts",
+ "source_path": "hub/apps/design/style/xaml-control-templates.md",
+ "redirect_url": "/windows/apps/develop/platform/xaml/xaml-control-templates",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/globalizing/manage-language-and-region.md",
- "redirect_url": "/windows/apps/design/globalizing/manage-language-and-region",
+ "source_path": "hub/apps/design/style/xaml-resource-dictionary.md",
+ "redirect_url": "/windows/apps/develop/platform/xaml/xaml-resource-dictionary",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/globalizing/prepare-your-app-for-localization.md",
- "redirect_url": "/windows/apps/design/globalizing/prepare-your-app-for-localization",
+ "source_path": "hub/apps/design/style/xaml-styles.md",
+ "redirect_url": "/windows/apps/develop/platform/xaml/xaml-styles",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/globalizing/use-global-ready-formats.md",
- "redirect_url": "/windows/apps/design/globalizing/use-global-ready-formats",
+ "source_path": "hub/apps/design/style/xaml-theme-resources.md",
+ "redirect_url": "/windows/apps/develop/platform/xaml/xaml-theme-resources",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/globalizing/use-mat.md",
- "redirect_url": "/windows/apps/design/globalizing/use-mat",
+ "source_path": "hub/apps/design/layout/transforms.md",
+ "redirect_url": "/windows/apps/develop/platform/xaml/transforms",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/globalizing/use-patterns-to-format-dates-and-times.md",
- "redirect_url": "/windows/apps/design/globalizing/use-patterns-to-format-dates-and-times",
+ "source_path": "hub/apps/design/layout/3-d-perspective-effects.md",
+ "redirect_url": "/windows/apps/develop/platform/xaml/3-d-perspective-effects",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/globalizing/use-utf8-code-page.md",
- "redirect_url": "/windows/apps/design/globalizing/use-utf8-code-page",
+ "source_path": "hub/apps/design/style/brushes.md",
+ "redirect_url": "/windows/apps/develop/platform/xaml/brushes",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/in-app-help/external-help.md",
- "redirect_url": "/windows/apps/design/in-app-help/external-help",
+ "source_path": "hub/apps/design/style/reveal-focus.md",
+ "redirect_url": "/windows/uwp/ui-input/reveal-focus",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/in-app-help/guidelines-for-app-help.md",
- "redirect_url": "/windows/apps/design/in-app-help/guidelines-for-app-help",
+ "source_path": "hub/apps/design/layout/app-window.md",
+ "redirect_url": "/windows/uwp/ui-input/app-window",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/in-app-help/in-app-help.md",
- "redirect_url": "/windows/apps/design/in-app-help/in-app-help",
+ "source_path": "hub/apps/design/layout/application-view.md",
+ "redirect_url": "/windows/uwp/ui-input/application-view",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/in-app-help/instructional-ui.md",
- "redirect_url": "/windows/apps/design/in-app-help/instructional-ui",
+ "source_path": "hub/apps/design/layout/show-multiple-views.md",
+ "redirect_url": "/windows/uwp/ui-input/show-multiple-views",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/index.md",
- "redirect_url": "/windows/apps/design/index",
+ "source_path": "hub/android/defender-settings.md",
+ "redirect_url": "/defender-endpoint/microsoft-defender-security-center-antivirus",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/input/access-keys.md",
- "redirect_url": "/windows/apps/design/input/access-keys",
+ "source_path": "hub/apps/get-started/client-frameworks-faq.yml",
+ "redirect_url": "/windows/apps/get-started/windows-developer-faq",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/input/convert-ink-to-text.md",
- "redirect_url": "/windows/apps/design/input/convert-ink-to-text",
+ "source_path": "hub/apps/publish/in-app-ads.md",
+ "redirect_url": "/windows/apps/publish/attract-customers-and-promote-your-apps",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/input/cortana-deep-link-into-your-app.md",
- "redirect_url": "/windows/apps/design/input/cortana-deep-link-into-your-app",
+ "source_path": "uwp/audio-video-camera/basic-photo-video-and-audio-capture-with-MediaCapture.md",
+ "redirect_url": "/windows/apps/develop/camera/basic-photo-capture",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/input/cortana-design-guidelines.md",
- "redirect_url": "/windows/apps/design/input/cortana-design-guidelines",
+ "source_path": "uwp/audio-video-camera/camera-profiles.md",
+ "redirect_url": "/windows/apps/develop/camera/camera-profiles",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/input/cortana-dynamically-modify-voice-command-definition-vcd-phrase-lists.md",
- "redirect_url": "/windows/apps/design/input/cortana-dynamically-modify-voice-command-definition-vcd-phrase-lists",
+ "source_path": "uwp/audio-video-camera/set-media-encoding-properties.md",
+ "redirect_url": "/windows/apps/develop/camera/set-media-encoding-properties",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/input/cortana-interact-with-a-background-app.md",
- "redirect_url": "/windows/apps/design/input/cortana-interact-with-a-background-app",
+ "source_path": "uwp/audio-video-camera/high-dynamic-range-hdr-photo-capture.md",
+ "redirect_url": "/windows/apps/develop/camera/high-dynamic-range-hdr-photo-capture",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/input/cortana-interactions.md",
- "redirect_url": "/windows/apps/design/input/cortana-interactions",
+ "source_path": "uwp/audio-video-camera/capture-device-controls-for-photo-and-video-capture.md",
+ "redirect_url": "/windows/apps/develop/camera/capture-device-controls-for-photo-and-video-capture",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/input/cortana-launch-a-background-app-with-voice-commands.md",
- "redirect_url": "/windows/apps/design/input/cortana-launch-a-background-app-with-voice-commands",
+ "source_path": "uwp/audio-video-camera/capture-device-controls-for-video-capture.md",
+ "redirect_url": "/windows/apps/develop/camera/capture-device-controls-for-video-capture",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/input/cortana-launch-a-foreground-app-with-voice-commands.md",
- "redirect_url": "/windows/apps/design/input/cortana-launch-a-foreground-app-with-voice-commands",
+ "source_path": "uwp/audio-video-camera/effects-for-video-capture.md",
+ "redirect_url": "/windows/apps/develop/camera/effects-for-video-capture",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/input/cortana-support-natural-language-voice-commands.md",
- "redirect_url": "/windows/apps/design/input/cortana-support-natural-language-voice-commands",
+ "source_path": "uwp/audio-video-camera/scene-analysis-for-media-capture.md",
+ "redirect_url": "/windows/apps/develop/camera/scene-analysis-for-media-capture",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/input/custom-text-input.md",
- "redirect_url": "/windows/apps/design/input/custom-text-input",
+ "source_path": "uwp/audio-video-camera/variable-photo-sequence.md",
+ "redirect_url": "/windows/apps/develop/camera/variable-photo-sequence",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/input/define-custom-recognition-constraints.md",
- "redirect_url": "/windows/apps/design/input/define-custom-recognition-constraints",
+ "source_path": "uwp/audio-video-camera/process-media-frames-with-mediaframereader.md",
+ "redirect_url": "/windows/apps/develop/camera/process-media-frames-with-mediaframereader",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/input/drag-and-drop.md",
- "redirect_url": "/windows/apps/design/input/drag-and-drop",
+ "source_path": "uwp/audio-video-camera/process-audio-frames-with-mediaframereader.md",
+ "redirect_url": "/windows/apps/develop/camera/process-audio-frames-with-mediaframereader",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/input/enable-continuous-dictation.md",
- "redirect_url": "/windows/apps/design/input/enable-continuous-dictation",
+ "source_path": "uwp/audio-video-camera/capture-from-multiple-sources-simultaneously.md",
+ "redirect_url": "/windows/apps/develop/camera/capture-from-multiple-sources-simultaneously",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/input/focus-navigation-programmatic.md",
- "redirect_url": "/windows/apps/design/input/focus-navigation-programmatic",
+ "source_path": "uwp/audio-video-camera/connect-to-remote-cameras.md",
+ "redirect_url": "/windows/apps/develop/camera/connect-to-remote-cameras",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/input/focus-navigation.md",
- "redirect_url": "/windows/apps/design/input/focus-navigation",
+ "source_path": "uwp/audio-video-camera/launch-camera-settings.md",
+ "redirect_url": "/windows/apps/develop/camera/launch-camera-settings",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/input/gamepad-and-remote-interactions.md",
- "redirect_url": "/windows/apps/design/input/gamepad-and-remote-interactions",
+ "source_path": "hub/apps/develop/camera/index.md",
+ "redirect_url": "/windows/apps/develop/camera/camera",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/input/gaze-interactions.md",
- "redirect_url": "/windows/apps/design/input/gaze-interactions",
+ "source_path": "uwp/launch-resume/handle-uri-activation.md",
+ "redirect_url": "/windows/apps/develop/launch/handle-uri-activation",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/input/guidelines-for-cross-slide.md",
- "redirect_url": "/windows/apps/design/input/guidelines-for-cross-slide",
+ "source_path": "uwp/launch-resume/launch-app-from-file.md",
+ "redirect_url": "/windows/apps/develop/launch/",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/input/guidelines-for-optical-zoom.md",
- "redirect_url": "/windows/apps/design/input/guidelines-for-optical-zoom",
+ "source_path": "uwp/launch-resume/launch-app-with-uri.md",
+ "redirect_url": "/windows/apps/develop/launch/",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/input/guidelines-for-panning.md",
- "redirect_url": "/windows/apps/design/input/guidelines-for-panning",
+ "source_path": "uwp/launch-resume/launch-default-app.md",
+ "redirect_url": "/windows/apps/develop/launch/launch-default-app",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/input/guidelines-for-rotation.md",
- "redirect_url": "/windows/apps/design/input/guidelines-for-rotation",
+ "source_path": "uwp/launch-resume/launch-default-apps-settings.md",
+ "redirect_url": "/windows/apps/develop/launch/launch-default-apps-settings",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/input/guidelines-for-targeting.md",
- "redirect_url": "/windows/apps/design/input/guidelines-for-targeting",
+ "source_path": "uwp/launch-resume/launch-maps-app.md",
+ "redirect_url": "/windows/apps/develop/launch/launch-default-app",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/input/guidelines-for-textselection.md",
- "redirect_url": "/windows/apps/design/input/guidelines-for-textselection",
+ "source_path": "uwp/launch-resume/launch-people-apps.md",
+ "redirect_url": "/windows/apps/develop/launch/launch-people-app",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/input/guidelines-for-visualfeedback.md",
- "redirect_url": "/windows/apps/design/input/guidelines-for-visualfeedback",
+ "source_path": "uwp/launch-resume/launch-screen-snipping.md",
+ "redirect_url": "/windows/apps/develop/launch/launch-screen-snipping",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/input/handle-pointer-input.md",
- "redirect_url": "/windows/apps/design/input/handle-pointer-input",
+ "source_path": "uwp/launch-resume/launch-settings-app.md",
+ "redirect_url": "/windows/apps/develop/launch/launch-settings",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/input/identify-input-devices.md",
- "redirect_url": "/windows/apps/design/input/identify-input-devices",
+ "source_path": "uwp/launch-resume/launch-store-app.md",
+ "redirect_url": "/windows/apps/develop/launch/launch-store-app",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/input/index.md",
- "redirect_url": "/windows/apps/design/input/index",
+ "source_path": "uwp/launch-resume/launch-the-default-app-for-a-file.md",
+ "redirect_url": "/windows/apps/develop/launch/launch-the-default-app-for-a-file",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/input/ink-toolbar.md",
- "redirect_url": "/windows/apps/design/input/ink-toolbar",
+ "source_path": "uwp/launch-resume/reserved-uri-scheme-names.md",
+ "redirect_url": "/windows/apps/develop/launch/reserved-uri-scheme-names",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/input/ink-walkthrough.md",
- "redirect_url": "/windows/apps/design/input/ink-walkthrough",
+ "source_path": "uwp/launch-resume/web-to-app-linking.md",
+ "redirect_url": "/windows/apps/develop/launch/web-to-app-linking",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/input/input-injection.md",
- "redirect_url": "/windows/apps/design/input/input-injection",
+ "source_path": "uwp/launch-resume/handle-file-activation.md",
+ "redirect_url": "/windows/apps/develop/launch/handle-file-activation",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/input/input-method-editor-requirements.md",
- "redirect_url": "/windows/apps/design/input/input-method-editor-requirements",
+ "source_path": "hub/apps/winui/winui2/index.md",
+ "redirect_url": "/windows/uwp/get-started/winui2/",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/input/input-method-editors.md",
- "redirect_url": "/windows/apps/design/input/input-method-editors",
+ "source_path": "hub/apps/winui/winui2/getting-started.md",
+ "redirect_url": "/windows/uwp/get-started/winui2/getting-started",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/input/input-primer.md",
- "redirect_url": "/windows/apps/design/input/input-primer",
+ "source_path": "hub/apps/winui/winui2/nuget-packages.md",
+ "redirect_url": "/windows/uwp/get-started/winui2/nuget-packages",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/input/keyboard-accelerators.md",
- "redirect_url": "/windows/apps/design/input/keyboard-accelerators",
+ "source_path": "hub/apps/winui/winui2/release-notes/index.md",
+ "redirect_url": "/windows/uwp/get-started/winui2/release-notes/",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/input/keyboard-events.md",
- "redirect_url": "/windows/apps/design/input/keyboard-events",
+ "source_path": "hub/apps/winui/winui2/release-notes/winui-2.0.md",
+ "redirect_url": "/windows/uwp/get-started/winui2/release-notes/winui-2.0",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/input/keyboard-interactions.md",
- "redirect_url": "/windows/apps/design/input/keyboard-interactions",
+ "source_path": "hub/apps/winui/winui2/release-notes/winui-2.1.md",
+ "redirect_url": "/windows/uwp/get-started/winui2/release-notes/winui-2.1",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/input/manage-issues-with-audio-input.md",
- "redirect_url": "/windows/apps/design/input/manage-issues-with-audio-input",
+ "source_path": "hub/apps/winui/winui2/release-notes/winui-2.2.md",
+ "redirect_url": "/windows/uwp/get-started/winui2/release-notes/winui-2.2",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/input/mouse-interactions.md",
- "redirect_url": "/windows/apps/design/input/mouse-interactions",
+ "source_path": "hub/apps/winui/winui2/release-notes/winui-2.3.md",
+ "redirect_url": "/windows/uwp/get-started/winui2/release-notes/winui-2.3",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/input/multiple-input-design-guidelines.md",
- "redirect_url": "/windows/apps/design/input/multiple-input-design-guidelines",
+ "source_path": "hub/apps/winui/winui2/release-notes/winui-2.4.md",
+ "redirect_url": "/windows/uwp/get-started/winui2/release-notes/winui-2.4",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/input/pen-and-stylus-interactions.md",
- "redirect_url": "/windows/apps/design/input/pen-and-stylus-interactions",
+ "source_path": "hub/apps/winui/winui2/release-notes/winui-2.5.md",
+ "redirect_url": "/windows/uwp/get-started/winui2/release-notes/winui-2.5",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/input/radialcontroller-walkthrough.md",
- "redirect_url": "/windows/apps/design/input/radialcontroller-walkthrough",
+ "source_path": "hub/apps/winui/winui2/release-notes/winui-2.6.md",
+ "redirect_url": "/windows/uwp/get-started/winui2/release-notes/winui-2.6",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/input/respond-to-the-presence-of-the-touch-keyboard.md",
- "redirect_url": "/windows/apps/design/input/respond-to-the-presence-of-the-touch-keyboard",
+ "source_path": "hub/apps/winui/winui2/release-notes/winui-2.7.md",
+ "redirect_url": "/windows/uwp/get-started/winui2/release-notes/winui-2.7",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/input/save-and-load-ink.md",
- "redirect_url": "/windows/apps/design/input/save-and-load-ink",
+ "source_path": "hub/apps/winui/winui2/release-notes/winui-2.8.md",
+ "redirect_url": "/windows/uwp/get-started/winui2/release-notes/winui-2.8",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/input/set-speech-recognition-timeouts.md",
- "redirect_url": "/windows/apps/design/input/set-speech-recognition-timeouts",
+ "source_path": "hub/apps/windows-app-sdk/windowing/windowing-overview.md",
+ "redirect_url": "/windows/apps/develop/ui-input/manage-app-windows",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/input/specify-the-speech-recognizer-language.md",
- "redirect_url": "/windows/apps/design/input/specify-the-speech-recognizer-language",
+ "source_path": "hub/sudo/index.md",
+ "redirect_url": "/windows/advanced-settings/sudo/",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/input/speech-interactions.md",
- "redirect_url": "/windows/apps/design/input/speech-interactions",
+ "source_path": "hub/apps/develop/actions/action-json.md",
+ "redirect_url": "/windows/ai/app-actions/actions-json",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/input/speech-recognition.md",
- "redirect_url": "/windows/apps/design/input/speech-recognition",
+ "source_path": "hub/apps/develop/actions/action-provider-manifest.md",
+ "redirect_url": "/windows/ai/app-actions/actions-provider-manifest",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/input/text-scaling.md",
- "redirect_url": "/windows/apps/design/input/text-scaling",
+ "source_path": "hub/apps/develop/actions/index.md",
+ "redirect_url": "/windows/ai/app-actions/",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/input/touch-interactions.md",
- "redirect_url": "/windows/apps/design/input/touch-interactions",
+ "source_path": "hub/apps/develop/launch/launch-maps-app.md",
+ "redirect_url": "/windows/apps/develop/launch/launch-default-app",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/input/touchpad-interactions.md",
- "redirect_url": "/windows/apps/design/input/touchpad-interactions",
+ "source_path": "hub/apps/windows-app-sdk/notifications/push-notifications/index.md",
+ "redirect_url": "../../../develop/notifications/push-notifications/index",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/input/use-input-scope-to-change-the-touch-keyboard.md",
- "redirect_url": "/windows/apps/design/input/use-input-scope-to-change-the-touch-keyboard",
+ "source_path": "hub/apps/windows-app-sdk/notifications/push-notifications/push-quickstart.md",
+ "redirect_url": "../../../develop/notifications/push-notifications/push-quickstart",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/input/windows-wheel-interactions.md",
- "redirect_url": "/windows/apps/design/input/windows-wheel-interactions",
+ "source_path": "hub/apps/windows-app-sdk/notifications/push-notifications/troubleshooting.md",
+ "redirect_url": "../../../develop/notifications/push-notifications/troubleshooting",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/layout/3-d-perspective-effects.md",
- "redirect_url": "/windows/apps/design/layout/3-d-perspective-effects",
+ "source_path": "hub/apps/windows-app-sdk/notifications/app-notifications/app-notifications-quickstart.md",
+ "redirect_url": "../../../develop/notifications/app-notifications/app-notifications-quickstart",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/layout/alignment-margin-padding.md",
- "redirect_url": "/windows/apps/design/layout/alignment-margin-padding",
+ "source_path": "hub/apps/windows-app-sdk/notifications/app-notifications/index.md",
+ "redirect_url": "../../../develop/notifications/app-notifications/index",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/layout/app-window.md",
- "redirect_url": "/windows/apps/design/layout/app-window",
+ "source_path": "hub/apps/design/shell/tiles-and-notifications/badges.md",
+ "redirect_url": "../../../develop/notifications/badges",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/layout/application-view.md",
- "redirect_url": "/windows/apps/design/layout/application-view",
+ "source_path": "hub/apps/design/shell/tiles-and-notifications/firewall-allowlist-config.md",
+ "redirect_url": "../../../develop/notifications/push-notifications/firewall-allowlist-config",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/layout/attached-layouts.md",
- "redirect_url": "/windows/apps/design/layout/attached-layouts",
+ "source_path": "hub/apps/design/shell/tiles-and-notifications/push-request-response-headers.md",
+ "redirect_url": "../../../develop/notifications/push-notifications/push-request-response-headers",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/layout/boxpanel-example-custom-panel.md",
- "redirect_url": "/windows/apps/design/layout/boxpanel-example-custom-panel",
+ "source_path": "hub/apps/design/shell/tiles-and-notifications/quickstart-send-push-notification.md",
+ "redirect_url": "../../../develop/notifications/push-notifications/quickstart-send-push-notification",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/layout/custom-panels-overview.md",
- "redirect_url": "/windows/apps/design/layout/custom-panels-overview",
+ "source_path": "hub/apps/design/shell/tiles-and-notifications/raw-notification-overview.md",
+ "redirect_url": "../../../develop/notifications/push-notifications/raw-notification-overview",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/layout/depth-shadow.md",
- "redirect_url": "/windows/apps/design/layout/depth-shadow",
+ "source_path": "hub/apps/design/shell/tiles-and-notifications/request-create-save-notification-channel.md",
+ "redirect_url": "../../../develop/notifications/push-notifications/request-create-save-notification-channel",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/layout/grid-tutorial.md",
- "redirect_url": "/windows/apps/design/layout/grid-tutorial",
+ "source_path": "hub/apps/design/shell/tiles-and-notifications/troubleshoot-notifications.md",
+ "redirect_url": "../../../develop/notifications/push-notifications/troubleshoot-notifications",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/layout/index.md",
- "redirect_url": "/windows/apps/design/layout/index",
+ "source_path": "hub/apps/design/shell/tiles-and-notifications/the-code-generated-by-the-push-notification-wizard.md",
+ "redirect_url": "../../../develop/notifications/push-notifications/code-generated-by-wizard",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/layout/layout-panels.md",
- "redirect_url": "/windows/apps/design/layout/layout-panels",
+ "source_path": "hub/apps/design/shell/tiles-and-notifications/WNS-Notification-Priorities.md",
+ "redirect_url": "../../../develop/notifications/push-notifications/wns-notification-priorities",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/layout/layouts-with-xaml.md",
- "redirect_url": "/windows/apps/design/layout/layouts-with-xaml",
+ "source_path": "hub/apps/design/shell/tiles-and-notifications/windows-push-notification-services--wns--overview.md",
+ "redirect_url": "../../../develop/notifications/push-notifications/wns-overview",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/layout/page-layout.md",
- "redirect_url": "/windows/apps/design/layout/page-layout",
+ "source_path": "hub/apps/design/shell/pin-to-taskbar.md",
+ "redirect_url": "../../develop/windows-integration/pin-to-taskbar",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/layout/responsive-design.md",
- "redirect_url": "/windows/apps/design/layout/responsive-design",
+ "source_path": "hub/apps/design/shell/tiles-and-notifications/adaptive-interactive-toasts.md",
+ "redirect_url": "../../../develop/notifications/app-notifications/adaptive-interactive-toasts",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/layout/screen-sizes-and-breakpoints-for-responsive-design.md",
- "redirect_url": "/windows/apps/design/layout/screen-sizes-and-breakpoints-for-responsive-design",
+ "source_path": "hub/apps/design/shell/tiles-and-notifications/channel-types.md",
+ "redirect_url": "../../../develop/notifications/channel-types",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/layout/show-multiple-views.md",
- "redirect_url": "/windows/apps/design/layout/show-multiple-views",
+ "source_path": "hub/apps/design/shell/tiles-and-notifications/choosing-a-notification-delivery-method.md",
+ "redirect_url": "../../../develop/notifications/choosing-a-notification-delivery-method",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/layout/transforms.md",
- "redirect_url": "/windows/apps/design/layout/transforms",
+ "source_path": "hub/apps/design/shell/tiles-and-notifications/custom-audio-on-toasts.md",
+ "redirect_url": "../../../develop/notifications/app-notifications/custom-audio-on-toasts",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/motion/connected-animation.md",
- "redirect_url": "/windows/apps/design/motion/connected-animation",
+ "source_path": "hub/apps/design/shell/tiles-and-notifications/custom-timestamps-on-toasts.md",
+ "redirect_url": "../../../develop/notifications/app-notifications/custom-timestamps-on-toasts",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/motion/content-transition-animations.md",
- "redirect_url": "/windows/apps/design/motion/content-transition-animations",
+ "source_path": "hub/apps/design/shell/tiles-and-notifications/notification-listener.md",
+ "redirect_url": "../../../develop/notifications/app-notifications/notification-listener",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/motion/directionality-and-gravity.md",
- "redirect_url": "/windows/apps/design/motion/directionality-and-gravity",
+ "source_path": "hub/apps/design/shell/tiles-and-notifications/notifications-visualizer.md",
+ "redirect_url": "../../../develop/notifications/notifications-visualizer",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/motion/index.md",
- "redirect_url": "/windows/apps/design/motion/index",
+ "source_path": "hub/apps/design/shell/tiles-and-notifications/periodic-notification-overview.md",
+ "redirect_url": "../../../develop/notifications/periodic-notification-overview",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/motion/key-frame-and-easing-function-animations.md",
- "redirect_url": "/windows/apps/design/motion/key-frame-and-easing-function-animations",
+ "source_path": "hub/apps/design/shell/tiles-and-notifications/scheduled-toast.md",
+ "redirect_url": "../../../develop/notifications/app-notifications/scheduled-toast",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/motion/motion-dragdrop.md",
- "redirect_url": "/windows/apps/design/motion/motion-dragdrop",
+ "source_path": "hub/apps/design/shell/tiles-and-notifications/send-local-toast.md",
+ "redirect_url": "../../../develop/notifications/app-notifications/send-local-toast",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/motion/motion-edgebased.md",
- "redirect_url": "/windows/apps/design/motion/motion-edgebased",
+ "source_path": "hub/apps/design/shell/tiles-and-notifications/send-local-toast-cpp-uwp.md",
+ "redirect_url": "../../../develop/notifications/app-notifications/send-local-toast-cpp-uwp",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/motion/motion-fade.md",
- "redirect_url": "/windows/apps/design/motion/motion-fade",
+ "source_path": "hub/apps/design/shell/tiles-and-notifications/send-local-toast-desktop-cpp-wrl.md",
+ "redirect_url": "../../../develop/notifications/app-notifications/send-local-toast-desktop-cpp-wrl",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/motion/motion-in-practice.md",
- "redirect_url": "/windows/apps/design/motion/motion-in-practice",
+ "source_path": "hub/apps/design/shell/tiles-and-notifications/send-local-toast-other-apps.md",
+ "redirect_url": "../../../develop/notifications/app-notifications/send-local-toast-other-apps",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/motion/motion-list.md",
- "redirect_url": "/windows/apps/design/motion/motion-list",
+ "source_path": "hub/apps/design/shell/tiles-and-notifications/toast-collections.md",
+ "redirect_url": "../../../develop/notifications/app-notifications/toast-collections",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/motion/motion-pointer.md",
- "redirect_url": "/windows/apps/design/motion/motion-pointer",
+ "source_path": "hub/apps/design/shell/tiles-and-notifications/toast-desktop-apps.md",
+ "redirect_url": "../../../develop/notifications/app-notifications/toast-desktop-apps",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/motion/motion-popup-animations.md",
- "redirect_url": "/windows/apps/design/motion/motion-popup-animations",
+ "source_path": "hub/apps/design/shell/tiles-and-notifications/toast-headers.md",
+ "redirect_url": "../../../develop/notifications/app-notifications/toast-headers",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/motion/motion-reposition.md",
- "redirect_url": "/windows/apps/design/motion/motion-reposition",
+ "source_path": "hub/apps/design/shell/tiles-and-notifications/toast-notifications-overview.md",
+ "redirect_url": "../../../develop/notifications/app-notifications/toast-notifications-overview",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/motion/page-transitions.md",
- "redirect_url": "/windows/apps/design/motion/page-transitions",
+ "source_path": "hub/apps/design/shell/tiles-and-notifications/toast-pending-update.md",
+ "redirect_url": "../../../develop/notifications/app-notifications/toast-pending-update",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/motion/parallax.md",
- "redirect_url": "/windows/apps/design/motion/parallax",
+ "source_path": "hub/apps/design/shell/tiles-and-notifications/toast-progress-bar.md",
+ "redirect_url": "../../../develop/notifications/app-notifications/toast-progress-bar",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/motion/storyboarded-animations.md",
- "redirect_url": "/windows/apps/design/motion/storyboarded-animations",
+ "source_path": "hub/apps/design/shell/tiles-and-notifications/toast-schema.md",
+ "redirect_url": "../../../develop/notifications/app-notifications/toast-schema",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/motion/timing-and-easing.md",
- "redirect_url": "/windows/apps/design/motion/timing-and-easing",
+ "source_path": "hub/apps/design/shell/tiles-and-notifications/toast-ux-guidance.md",
+ "redirect_url": "../../../develop/notifications/app-notifications/toast-ux-guidance",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/motion/xaml-animation.md",
- "redirect_url": "/windows/apps/design/motion/xaml-animation",
+ "source_path": "hub/apps/develop/windows-integration/microsoft-copliot-key-provider.md",
+ "redirect_url": "/windows/apps/develop/windows-integration/microsoft-copilot-key-provider",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/motion/xaml-property-animations.md",
- "redirect_url": "/windows/apps/design/motion/xaml-property-animations",
+ "source_path": "hub/powertoys/command-palette/microsoft-commandpalette-extensions/ifilters_filters.md",
+ "redirect_url": "/windows/powertoys/command-palette/microsoft-commandpalette-extensions/ifilters_getfilters",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/shell/pin-to-taskbar.md",
- "redirect_url": "/windows/apps/design/shell/pin-to-taskbar",
+ "source_path": "hub/apps/tutorials/winui-notes/index.yml",
+ "redirect_url": "/windows/apps/tutorials/winui-notes/intro",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/shell/tiles-and-notifications/WNS-Notification-Priorities.md",
- "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/WNS-Notification-Priorities",
+ "source_path": "uwp/xaml-platform/attached-properties-overview.md",
+ "redirect_url": "/windows/apps/develop/platform/xaml/attached-properties-overview",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/shell/tiles-and-notifications/adaptive-interactive-toasts.md",
- "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/adaptive-interactive-toasts",
+ "source_path": "uwp/xaml-platform/binding-markup-extension.md",
+ "redirect_url": "/windows/apps/develop/platform/xaml/binding-markup-extension",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/shell/tiles-and-notifications/adaptive-tiles-schema.md",
- "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/adaptive-tiles-schema",
+ "source_path": "uwp/xaml-platform/custom-attached-properties.md",
+ "redirect_url": "/windows/apps/develop/platform/xaml/custom-attached-properties",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/shell/tiles-and-notifications/alternate-channel-VAPID-webpush.md",
- "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/alternate-channel-VAPID-webpush",
+ "source_path": "uwp/xaml-platform/custom-dependency-properties.md",
+ "redirect_url": "/windows/apps/develop/platform/xaml/custom-dependency-properties",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/shell/tiles-and-notifications/badges.md",
- "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/badges",
+ "source_path": "uwp/xaml-platform/customresource-markup-extension.md",
+ "redirect_url": "/windows/apps/develop/platform/xaml/customresource-markup-extension",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/shell/tiles-and-notifications/channel-types.md",
- "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/channel-types",
+ "source_path": "uwp/xaml-platform/dependency-properties-overview.md",
+ "redirect_url": "/windows/apps/develop/platform/xaml/dependency-properties-overview",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/shell/tiles-and-notifications/chaseable-tile-notifications.md",
- "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/chaseable-tile-notifications",
+ "source_path": "uwp/xaml-platform/events-and-routed-events-overview.md",
+ "redirect_url": "/windows/apps/develop/platform/xaml/events-and-routed-events-overview",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/shell/tiles-and-notifications/choosing-a-notification-delivery-method.md",
- "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/choosing-a-notification-delivery-method",
+ "source_path": "uwp/xaml-platform/index.md",
+ "redirect_url": "/windows/apps/develop/platform/xaml/index",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/shell/tiles-and-notifications/create-adaptive-tiles.md",
- "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/create-adaptive-tiles",
+ "source_path": "uwp/xaml-platform/move-draw-commands-syntax.md",
+ "redirect_url": "/windows/apps/develop/platform/xaml/move-draw-commands-syntax",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/shell/tiles-and-notifications/creating-tiles.md",
- "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/creating-tiles",
+ "source_path": "uwp/xaml-platform/property-path-syntax.md",
+ "redirect_url": "/windows/apps/develop/platform/xaml/property-path-syntax",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/shell/tiles-and-notifications/custom-audio-on-toasts.md",
- "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/custom-audio-on-toasts",
+ "source_path": "uwp/xaml-platform/relativesource-markup-extension.md",
+ "redirect_url": "/windows/apps/develop/platform/xaml/relativesource-markup-extension",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/shell/tiles-and-notifications/custom-timestamps-on-toasts.md",
- "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/custom-timestamps-on-toasts",
+ "source_path": "uwp/xaml-platform/staticresource-markup-extension.md",
+ "redirect_url": "/windows/apps/develop/platform/xaml/staticresource-markup-extension",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/shell/tiles-and-notifications/firewall-allowlist-config.md",
- "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/firewall-allowlist-config",
+ "source_path": "uwp/xaml-platform/templatebinding-markup-extension.md",
+ "redirect_url": "/windows/apps/develop/platform/xaml/templatebinding-markup-extension",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/shell/tiles-and-notifications/includes/desktop-toast-activation-code.md",
- "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/includes/desktop-toast-activation-code",
+ "source_path": "uwp/xaml-platform/template-settings-classes.md",
+ "redirect_url": "/windows/apps/develop/platform/xaml/template-settings-classes",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/shell/tiles-and-notifications/includes/desktop-toast-activation-sequence.md",
- "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/includes/desktop-toast-activation-sequence",
+ "source_path": "uwp/xaml-platform/themeresource-markup-extension.md",
+ "redirect_url": "/windows/apps/develop/platform/xaml/themeresource-markup-extension",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/shell/tiles-and-notifications/includes/images-note.md",
- "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/includes/images-note",
+ "source_path": "uwp/xaml-platform/xaml-and-whitespace.md",
+ "redirect_url": "/windows/apps/develop/platform/xaml/xaml-and-whitespace",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/shell/tiles-and-notifications/includes/nuget-package-dotnet-warnings.md",
- "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/includes/nuget-package-dotnet-warnings",
+ "source_path": "uwp/xaml-platform/xaml-intrinsic-data-types.md",
+ "redirect_url": "/windows/apps/develop/platform/xaml/xaml-intrinsic-data-types",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/shell/tiles-and-notifications/includes/nuget-package.md",
- "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/includes/nuget-package",
+ "source_path": "uwp/xaml-platform/xaml-namescopes.md",
+ "redirect_url": "/windows/apps/develop/platform/xaml/xaml-namescopes",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/shell/tiles-and-notifications/includes/onlaunched-warning.md",
- "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/includes/onlaunched-warning",
+ "source_path": "uwp/xaml-platform/xaml-namespaces-and-namespace-mapping.md",
+ "redirect_url": "/windows/apps/develop/platform/xaml/xaml-namespaces-and-namespace-mapping",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/shell/tiles-and-notifications/includes/send-toast-basic-toast-intro.md",
- "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/includes/send-toast-basic-toast-intro",
+ "source_path": "uwp/xaml-platform/xaml-overview.md",
+ "redirect_url": "/windows/apps/develop/platform/xaml/xaml-overview",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/shell/tiles-and-notifications/includes/send-toast-intro.md",
- "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/includes/send-toast-intro",
+ "source_path": "uwp/xaml-platform/xaml-syntax-guide.md",
+ "redirect_url": "/windows/apps/develop/platform/xaml/xaml-syntax-guide",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/shell/tiles-and-notifications/index.md",
- "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/index",
+ "source_path": "uwp/xaml-platform/x-bind-markup-extension.md",
+ "redirect_url": "/windows/apps/develop/platform/xaml/x-bind-markup-extension",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/shell/tiles-and-notifications/notification-listener.md",
- "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/notification-listener",
+ "source_path": "uwp/xaml-platform/x-class-attribute.md",
+ "redirect_url": "/windows/apps/develop/platform/xaml/x-class-attribute",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/shell/tiles-and-notifications/notification-mirroring.md",
- "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/notification-mirroring",
+ "source_path": "uwp/xaml-platform/x-defaultbindmode-attribute.md",
+ "redirect_url": "/windows/apps/develop/platform/xaml/x-defaultbindmode-attribute",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/shell/tiles-and-notifications/notifications-visualizer.md",
- "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/notifications-visualizer",
+ "source_path": "uwp/xaml-platform/x-deferloadstrategy-attribute.md",
+ "redirect_url": "/windows/apps/develop/platform/xaml/x-deferloadstrategy-attribute",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/shell/tiles-and-notifications/periodic-notification-overview.md",
- "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/periodic-notification-overview",
+ "source_path": "uwp/xaml-platform/x-fieldmodifier-attribute.md",
+ "redirect_url": "/windows/apps/develop/platform/xaml/x-fieldmodifier-attribute",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/shell/tiles-and-notifications/primary-tile-apis.md",
- "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/primary-tile-apis",
+ "source_path": "uwp/xaml-platform/x-key-attribute.md",
+ "redirect_url": "/windows/apps/develop/platform/xaml/x-key-attribute",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/shell/tiles-and-notifications/raw-notification-overview.md",
- "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/raw-notification-overview",
+ "source_path": "uwp/xaml-platform/x-load-attribute.md",
+ "redirect_url": "/windows/apps/develop/platform/xaml/x-load-attribute",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/shell/tiles-and-notifications/scheduled-toast.md",
- "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/scheduled-toast",
+ "source_path": "uwp/xaml-platform/x-name-attribute.md",
+ "redirect_url": "/windows/apps/develop/platform/xaml/x-name-attribute",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/shell/tiles-and-notifications/secondary-tiles-desktop-pinning.md",
- "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/secondary-tiles-desktop-pinning",
+ "source_path": "uwp/xaml-platform/x-null-markup-extension.md",
+ "redirect_url": "/windows/apps/develop/platform/xaml/x-null-markup-extension",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/shell/tiles-and-notifications/secondary-tiles-guidance.md",
- "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/secondary-tiles-guidance",
+ "source_path": "uwp/xaml-platform/x-phase-attribute.md",
+ "redirect_url": "/windows/apps/develop/platform/xaml/x-phase-attribute",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/shell/tiles-and-notifications/secondary-tiles-pin-to-taskbar.md",
- "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/secondary-tiles-pin-to-taskbar",
+ "source_path": "uwp/xaml-platform/x-uid-directive.md",
+ "redirect_url": "/windows/apps/develop/platform/xaml/x-uid-directive",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/shell/tiles-and-notifications/secondary-tiles-pinning.md",
- "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/secondary-tiles-pinning",
+ "source_path": "hub/apps/develop/launch/launch-settings-app.md",
+ "redirect_url": "/windows/apps/develop/launch/launch-settings",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/shell/tiles-and-notifications/secondary-tiles.md",
- "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/secondary-tiles",
+ "source_path": "uwp/app-to-app/copy-and-paste.md",
+ "redirect_url": "/windows/apps/develop/communication/copy-and-paste",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/shell/tiles-and-notifications/send-local-toast-cpp-uwp.md",
- "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/send-local-toast-cpp-uwp",
+ "source_path": "hub/apps/develop/communication.md",
+ "redirect_url": "/windows/apps/develop/communication/",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/shell/tiles-and-notifications/send-local-toast-desktop-cpp-wrl.md",
- "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/send-local-toast-desktop-cpp-wrl",
+ "source_path": "hub/apps/design/globalizing/mat-faq-troubleshooting.yml",
+ "redirect_url": "/windows/apps/design/globalizing/mat-announcements",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/shell/tiles-and-notifications/send-local-toast-other-apps.md",
- "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/send-local-toast-other-apps",
+ "source_path": "hub/apps/design/globalizing/multilingual-app-toolkit-editor-downloads.md",
+ "redirect_url": "/windows/apps/design/globalizing/mat-announcements",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/shell/tiles-and-notifications/send-local-toast.md",
- "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/send-local-toast",
+ "source_path": "hub/apps/design/globalizing/use-mat.md",
+ "redirect_url": "/windows/apps/design/globalizing/mat-announcements",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/shell/tiles-and-notifications/sending-a-local-tile-notification.md",
- "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/sending-a-local-tile-notification",
+ "source_path": "hub/powertoys/dsc-configure.md",
+ "redirect_url": "/windows/powertoys/dsc-configure/overview",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/shell/tiles-and-notifications/special-tile-templates-catalog.md",
- "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/special-tile-templates-catalog",
+ "source_path": "hub/apps/get-started/enable-your-device-for-development.md",
+ "redirect_url": "/windows/advanced-settings/developer-mode",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/shell/tiles-and-notifications/the-code-generated-by-the-push-notification-wizard.md",
- "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/the-code-generated-by-the-push-notification-wizard",
+ "source_path": "hub/apps/design/style/icons.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/icons",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/shell/tiles-and-notifications/tile-schema.md",
- "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/tile-schema",
+ "source_path": "hub/apps/design/controls/animated-icon.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/animated-icon",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/shell/tiles-and-notifications/tile-toast-language-scale-contrast.md",
- "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/tile-toast-language-scale-contrast",
+ "source_path": "hub/apps/design/controls/annotated-scrollbar.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/annotated-scrollbar",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/shell/tiles-and-notifications/toast-collections.md",
- "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/toast-collections",
+ "source_path": "hub/apps/design/controls/auto-suggest-box.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/auto-suggest-box",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/shell/tiles-and-notifications/toast-desktop-apps.md",
- "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/toast-desktop-apps",
+ "source_path": "hub/apps/design/controls/breadcrumbbar.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/breadcrumbbar",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/shell/tiles-and-notifications/toast-headers.md",
- "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/toast-headers",
+ "source_path": "hub/apps/design/controls/buttons.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/buttons",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/shell/tiles-and-notifications/toast-pending-update.md",
- "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/toast-pending-update",
+ "source_path": "hub/apps/design/controls/calendar-date-picker.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/calendar-date-picker",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/shell/tiles-and-notifications/toast-progress-bar.md",
- "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/toast-progress-bar",
+ "source_path": "hub/apps/design/controls/calendar-view.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/calendar-view",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/shell/tiles-and-notifications/toast-schema.md",
- "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/toast-schema",
+ "source_path": "hub/apps/design/controls/checkbox.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/checkbox",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/shell/tiles-and-notifications/toast-ux-guidance.md",
- "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/toast-ux-guidance",
+ "source_path": "hub/apps/design/controls/collection-commanding.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/collection-commanding",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/shell/tiles-and-notifications/universal-dismiss.md",
- "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/universal-dismiss",
+ "source_path": "hub/apps/design/controls/color-picker.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/color-picker",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/shell/tiles-and-notifications/windows-push-notification-services--wns--overview.md",
- "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/windows-push-notification-services--wns--overview",
+ "source_path": "hub/apps/design/controls/combo-box.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/combo-box",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/shell/title-bar.md",
- "redirect_url": "/windows/apps/design/shell/title-bar",
+ "source_path": "hub/apps/design/controls/command-bar.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/command-bar",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/style/acrylic.md",
- "redirect_url": "/windows/apps/design/style/acrylic",
+ "source_path": "hub/apps/design/controls/command-bar-flyout.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/command-bar-flyout",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/style/balancing-style-and-consistency.md",
- "redirect_url": "/windows/apps/design/style/balancing-style-and-consistency",
+ "source_path": "hub/apps/design/controls/commanding.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/commanding",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/style/brushes.md",
- "redirect_url": "/windows/apps/design/style/brushes",
+ "source_path": "hub/apps/design/controls/contact-card.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/contact-card",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/style/color.md",
- "redirect_url": "/windows/apps/design/style/color",
+ "source_path": "hub/apps/design/controls/content-links.md",
+ "redirect_url": "/previous-versions/windows/uwp/ui-input/content-links",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/style/icons.md",
- "redirect_url": "/windows/apps/design/style/icons",
+ "source_path": "hub/apps/design/controls/controls-and-events-intro.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/controls-and-events-intro",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/style/index.md",
- "redirect_url": "/windows/apps/design/style/index",
+ "source_path": "hub/apps/design/controls/custom-transport-controls.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/custom-transport-controls",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/style/reveal-focus.md",
- "redirect_url": "/windows/apps/design/style/reveal-focus",
+ "source_path": "hub/apps/design/controls/data-template-selector.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/data-template-selector",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/style/rounded-corner.md",
- "redirect_url": "/windows/apps/design/style/rounded-corner",
+ "source_path": "hub/apps/design/controls/date-and-time.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/date-and-time",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/style/segoe-ui-symbol-font.md",
- "redirect_url": "/windows/apps/design/style/segoe-ui-symbol-font",
+ "source_path": "hub/apps/design/controls/date-picker.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/date-picker",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/style/sound.md",
- "redirect_url": "/windows/apps/design/style/sound",
+ "source_path": "hub/apps/design/controls/expander.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/expander",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/style/spacing.md",
- "redirect_url": "/windows/apps/design/style/spacing",
+ "source_path": "hub/apps/design/controls/flipview.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/flipview",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/style/typography.md",
- "redirect_url": "/windows/apps/design/style/typography",
+ "source_path": "hub/apps/design/controls/forms.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/forms",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/style/writing-style.md",
- "redirect_url": "/windows/apps/design/style/writing-style",
+ "source_path": "hub/apps/design/controls/hyperlinks.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/hyperlinks",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/usability/index.md",
- "redirect_url": "/windows/apps/design/usability/index",
+ "source_path": "hub/apps/design/controls/images-imagebrushes.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/images-imagebrushes",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/windows-template-studio/index.md",
- "redirect_url": "/windows/apps/design/windows-template-studio/index",
+ "source_path": "hub/apps/design/controls/index.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/index",
"redirect_document_id": false
},
{
- "source_path": "uwp/design/controls-and-patterns/menus-and-context-menus.md",
- "redirect_url": "/windows/apps/design/controls/menus-and-context-menus",
+ "source_path": "hub/apps/design/controls/info-badge.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/info-badge",
"redirect_document_id": false
},
{
- "source_path": "hub/apps/fluent-design-system.md",
- "redirect_url": "/windows/apps/design/index",
+ "source_path": "hub/apps/design/controls/infobar.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/infobar",
"redirect_document_id": false
},
{
- "source_path": "hub/apps/design/windows-template-studio/index.md",
- "redirect_url": "/windows/apps/design/downloads/",
+ "source_path": "hub/apps/design/controls/inking-controls.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/inking-controls",
"redirect_document_id": false
},
{
- "source_path": "hub/apps/package-and-deploy/deploy-apps-that-use-the-windows-app-sdk.md",
- "redirect_url": "/windows/apps/package-and-deploy/index",
+ "source_path": "hub/apps/design/controls/inverted-lists.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/inverted-lists",
"redirect_document_id": false
},
{
- "source_path": "hub/apps/design/layout/page-layout.md",
- "redirect_url": "/windows/apps/design/basics/app-silhouette",
+ "source_path": "hub/apps/design/controls/item-containers-templates.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/item-containers-templates",
"redirect_document_id": false
},
{
- "source_path": "uwp/get-started/get-app-samples.md",
- "redirect_url": "/windows/apps/get-started/samples",
+ "source_path": "hub/apps/design/controls/items-repeater.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/items-repeater",
"redirect_document_id": false
},
{
- "source_path": "hub/apps/windows-app-sdk/samples.md",
- "redirect_url": "/windows/apps/get-started/samples",
+ "source_path": "hub/apps/design/controls/itemsview.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/itemsview",
"redirect_document_id": false
},
{
- "source_path": "hub/apps/whats-new/build2021-docs.md",
- "redirect_url": "/windows/apps",
+ "source_path": "hub/apps/design/controls/item-templates-gridview.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/item-templates-gridview",
"redirect_document_id": false
},
{
- "source_path": "hub/apps/design/shell/title-bar.md",
- "redirect_url": "/windows/apps/develop/title-bar",
+ "source_path": "hub/apps/design/controls/item-templates-listview.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/item-templates-listview",
"redirect_document_id": false
},
{
- "source_path": "uwp/csharp-winrt/index.md",
- "redirect_url": "/windows/apps/develop/platform/csharp-winrt/index",
+ "source_path": "hub/apps/design/controls/labels.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/labels",
"redirect_document_id": false
},
{
- "source_path": "uwp/uwp/csharp-winrt/net-mappings-of-winrt-types.md",
- "redirect_url": "/windows/apps/develop/platform/csharp-winrt/net-mappings-of-winrt-types",
+ "source_path": "hub/apps/design/controls/list-details.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/list-details",
"redirect_document_id": false
},
{
- "source_path": "uwp/csharp-winrt/net-projection-from-cppwinrt-component.md",
- "redirect_url": "/windows/apps/develop/platform/csharp-winrt/net-projection-from-cppwinrt-component",
+ "source_path": "hub/apps/design/controls/lists.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/lists",
"redirect_document_id": false
},
{
- "source_path": "uwp/csharp-winrt/create-windows-runtime-component-cswinrt.md",
- "redirect_url": "/windows/apps/develop/platform/csharp-winrt/create-windows-runtime-component-cswinrt",
+ "source_path": "hub/apps/design/controls/listview-and-gridview.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/listview-and-gridview",
"redirect_document_id": false
},
{
- "source_path": "uwp/csharp-winrt/authoring-diagnostics.md",
- "redirect_url": "/windows/apps/develop/platform/csharp-winrt/authoring-diagnostics",
+ "source_path": "hub/apps/design/controls/listview-filtering.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/listview-filtering",
"redirect_document_id": false
},
{
- "source_path": "uwp/csharp-winrt/agile-objects.md",
- "redirect_url": "/windows/apps/develop/platform/csharp-winrt/agile-objects",
+ "source_path": "hub/apps/design/controls/media-playback.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/media-playback",
"redirect_document_id": false
},
{
- "source_path": "hub/apps/reference/index.md",
- "redirect_url": "/windows/apps/api-reference/index",
- "redirect_document_id": true
+ "source_path": "hub/apps/design/controls/menus.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/menus",
+ "redirect_document_id": false
},
{
- "source_path": "landing/arm-docs/index.yml",
- "redirect_url": "/windows/arm/overview",
- "redirect_document_id": true
+ "source_path": "hub/apps/design/controls/menus-and-context-menus.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/menus-and-context-menus",
+ "redirect_document_id": false
},
{
- "source_path": "hub/apps/design/shell/tiles-and-notifications/alternate-channel-vapid-webpush.md",
- "redirect_url": "/windows/apps/design/shell/tiles-and-notifications/windows-push-notification-services--wns--overview",
+ "source_path": "hub/apps/design/controls/navigationview.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/navigationview",
"redirect_document_id": false
},
{
- "source_path": "hub/apps/get-started/simple-photo-viewer-winiu3.md",
- "redirect_url": "/windows/apps/get-started/simple-photo-viewer-winui3",
+ "source_path": "hub/apps/design/controls/nested-ui.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/nested-ui",
"redirect_document_id": false
},
{
- "source_path": "hub/package-manager/package/windows-package-manager-policies-change-history.md",
- "redirect_url": "/windows/package-manager/package/windows-package-manager-policies",
+ "source_path": "hub/apps/design/controls/number-box.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/number-box",
"redirect_document_id": false
},
{
- "source_path": "uwp/porting/arm64ec.md",
- "redirect_url": "/windows/arm/arm64ec",
+ "source_path": "hub/apps/design/controls/password-box.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/password-box",
"redirect_document_id": false
},
{
- "source_path": "uwp/porting/apps-on-arm.md",
- "redirect_url": "/windows/arm/overview",
+ "source_path": "hub/apps/design/controls/person-picture.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/person-picture",
"redirect_document_id": false
},
{
- "source_path": "uwp/porting/arm64ec-abi.md",
- "redirect_url": "/windows/arm/arm64ec-abi",
+ "source_path": "hub/apps/design/controls/pipspager.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/pipspager",
"redirect_document_id": false
},
{
- "source_path": "uwp/porting/ios-to-uwp-root.md",
- "redirect_url": "/windows/apps/get-started",
+ "source_path": "hub/apps/design/controls/pivot.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/pivot",
"redirect_document_id": false
},
{
- "source_path": "uwp/porting/selecting-an-approach-to-ios-and-uwp-app-development.md",
- "redirect_url": "/windows/apps/get-started",
+ "source_path": "hub/apps/design/controls/progress-controls.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/progress-controls",
"redirect_document_id": false
},
{
- "source_path": "uwp/porting/android-ios-uwp-map.md",
- "redirect_url": "/windows/apps/get-started",
+ "source_path": "hub/apps/design/controls/pull-to-refresh.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/pull-to-refresh",
"redirect_document_id": false
},
{
- "source_path": "uwp/porting/getting-started-animation.md",
- "redirect_url": "/windows/apps/get-started",
+ "source_path": "hub/apps/design/controls/radio-button.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/radio-button",
"redirect_document_id": false
},
{
- "source_path": "uwp/porting/getting-started-choosing-a-programming-language.md",
- "redirect_url": "/windows/apps/get-started",
+ "source_path": "hub/apps/design/controls/rating.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/rating",
"redirect_document_id": false
},
{
- "source_path": "uwp/porting/getting-started-common-controls.md",
- "redirect_url": "/windows/apps/get-started",
+ "source_path": "hub/apps/design/controls/rich-edit-box.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/rich-edit-box",
"redirect_document_id": false
},
{
- "source_path": "uwp/porting/getting-started-creating-a-project.md",
- "redirect_url": "/windows/apps/get-started",
+ "source_path": "hub/apps/design/controls/rich-text-block.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/rich-text-block",
"redirect_document_id": false
},
{
- "source_path": "uwp/porting/getting-started-getting-around-in-visual-studio.md",
- "redirect_url": "/windows/apps/get-started",
+ "source_path": "hub/apps/design/controls/scroll-controls.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/scroll-controls",
"redirect_document_id": false
},
{
- "source_path": "uwp/porting/getting-started-navigation.md",
- "redirect_url": "/windows/apps/get-started",
+ "source_path": "hub/apps/design/controls/selection-modes.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/selection-modes",
"redirect_document_id": false
},
{
- "source_path": "uwp/porting/getting-started-what-next.md",
- "redirect_url": "/windows/apps/get-started",
+ "source_path": "hub/apps/design/controls/selector-bar.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/selector-bar",
"redirect_document_id": false
},
{
- "source_path": "uwp/porting/getting-started-with-uwp-for-ios-developers.md",
- "redirect_url": "/windows/apps/get-started",
+ "source_path": "hub/apps/design/controls/semantic-zoom.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/semantic-zoom",
"redirect_document_id": false
},
{
- "source_path": "uwp/porting/setting-up-your-mac-with-windows-10.md",
- "redirect_url": "/windows/apps/get-started",
+ "source_path": "hub/apps/design/controls/shapes.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/shapes",
"redirect_document_id": false
},
{
- "source_path": "hub/apps/windows-app-sdk/notifications/push/push-quickstart.md",
- "redirect_url": "/windows/apps/windows-app-sdk/notifications/push-notifications/push-quickstart",
- "redirect_document_id": true
+ "source_path": "hub/apps/design/controls/slider.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/slider",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/publish/account-types-locations-and-fees.md",
- "redirect_url": "/windows/apps/publish/partner-center/account-types-locations-and-fees",
+ "source_path": "hub/apps/design/controls/split-view.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/split-view",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/add-on-submissions.md",
- "redirect_url": "/windows/apps/publish/publish-your-app/create-app-submission?pivots=store-installer-add-on",
+ "source_path": "hub/apps/design/controls/swipe.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/swipe",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/add-users-groups-and-azure-ad-applications.md",
- "redirect_url": "/windows/apps/publish/partner-center/add-users-groups-and-azure-ad-applications",
+ "source_path": "hub/apps/design/controls/tab-view.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/tab-view",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/age-ratings.md",
- "redirect_url": "/windows/apps/publish/publish-your-app/age-ratings?pivots=store-installer-msix",
+ "source_path": "hub/apps/design/controls/text-block.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/text-block",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/app-package-requirements.md",
- "redirect_url": "/windows/apps/publish/publish-your-app/app-package-requirements?pivots=store-installer-msix",
+ "source_path": "hub/apps/design/controls/text-box.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/text-box",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/app-screenshots-and-images.md",
- "redirect_url": "/windows/apps/publish/publish-your-app/screenshots-and-images?pivots=store-installer-msix",
+ "source_path": "hub/apps/design/controls/text-controls.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/text-controls",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/app-submissions.md",
- "redirect_url": "/windows/apps/publish/publish-your-app/create-app-submission?pivots=store-installer-msix",
+ "source_path": "hub/apps/design/controls/text-handwriting-view.md",
+ "redirect_url": "/windows/apps/design/input/text-handwriting-view",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/associate-azure-ad-with-partner-center.md",
- "redirect_url": "/windows/apps/publish/partner-center/associate-azure-ad-with-partner-center",
+ "source_path": "hub/apps/design/controls/time-picker.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/time-picker",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/avoid-common-certification-failures.md",
- "redirect_url": "/windows/apps/publish/publish-your-app/avoid-common-certification-failures?pivots=store-installer-msix",
+ "source_path": "hub/apps/design/controls/title-bar.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/title-bar",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/category-and-subcategory-table.md",
- "redirect_url": "/windows/apps/publish/publish-your-app/categories-and-subcategories?pivots=store-installer-msix",
+ "source_path": "hub/apps/design/controls/toggles.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/toggles",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/choose-visibility-options.md",
- "redirect_url": "/windows/apps/publish/publish-your-app/visibility-options?pivots=store-installer-msix",
+ "source_path": "hub/apps/design/controls/tooltips.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/tooltips",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/configure-precise-release-scheduling.md",
- "redirect_url": "/windows/apps/publish/publish-your-app/release-schedule?pivots=store-installer-msix",
+ "source_path": "hub/apps/design/controls/tree-view.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/tree-view",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/create-add-on-store-listings.md",
- "redirect_url": "/windows/apps/publish/publish-your-app/create-app-store-listing?pivots=store-installer-add-on",
+ "source_path": "hub/apps/design/controls/two-pane-view.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/two-pane-view",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/create-app-store-listings.md",
- "redirect_url": "/windows/apps/publish/publish-your-app/create-app-store-listing?pivots=store-installer-msix",
+ "source_path": "hub/apps/design/controls/web-view.md",
+ "redirect_url": "/windows/uwp/ui-input/web-view",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/create-platform-specific-store-listings.md",
- "redirect_url": "/windows/apps/publish/publish-your-app/create-platform-specific-store-listings?pivots=store-installer-msix",
+ "source_path": "hub/apps/design/controls/dialogs-and-flyouts/dialogs.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/dialogs-and-flyouts/dialogs",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/create-your-app-by-reserving-a-name.md",
- "redirect_url": "/windows/apps/publish/publish-your-app/reserve-your-apps-name?pivots=store-installer-msix",
+ "source_path": "hub/apps/design/controls/dialogs-and-flyouts/flyouts.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/dialogs-and-flyouts/flyouts",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/define-market-selection.md",
- "redirect_url": "/windows/apps/publish/publish-your-app/market-selection?pivots=store-installer-msix",
+ "source_path": "hub/apps/design/controls/dialogs-and-flyouts/index.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/dialogs-and-flyouts/index",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/device-family-availability.md",
- "redirect_url": "/windows/apps/publish/publish-your-app/device-families?pivots=store-installer-msix",
+ "source_path": "hub/apps/design/controls/dialogs-and-flyouts/teaching-tip.md",
+ "redirect_url": "/windows/apps/develop/ui/controls/dialogs-and-flyouts/teaching-tip",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/enter-add-on-properties.md",
- "redirect_url": "/windows/apps/publish/publish-your-app/enter-app-properties?pivots=store-installer-add-on",
+ "source_path": "hub/apps/develop/ui-input/display-ui-objects.md",
+ "redirect_url": "/windows/apps/develop/ui/display-ui-objects",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/enter-app-properties.md",
- "redirect_url": "/windows/apps/publish/publish-your-app/enter-app-properties?pivots=store-installer-msix",
+ "source_path": "hub/apps/develop/ui-input/manage-app-windows.md",
+ "redirect_url": "/windows/apps/develop/ui/manage-app-windows",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/guidance-for-app-package-management.md",
- "redirect_url": "/windows/apps/publish/publish-your-app/app-package-management?pivots=store-installer-msix",
+ "source_path": "hub/apps/develop/ui-input/multiple-windows.md",
+ "redirect_url": "/windows/apps/develop/ui/multiple-windows",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/import-and-export-store-listings.md",
- "redirect_url": "/windows/apps/publish/publish-your-app/import-and-export-store-listings?pivots=store-installer-msix",
+ "source_path": "hub/apps/develop/ui-input/retrieve-hwnd.md",
+ "redirect_url": "/windows/apps/develop/ui/retrieve-hwnd",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/manage-account-users.md",
- "redirect_url": "/windows/apps/publish/partner-center/manage-account-users",
+ "source_path": "hub/apps/develop/ui-input/visual-tree.md",
+ "redirect_url": "/windows/apps/develop/ui/visual-tree",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/manage-app-names.md",
- "redirect_url": "/windows/apps/publish/partner-center/manage-app-name-reservations",
+ "source_path": "hub/apps/develop/ui-input/windowing-overview.md",
+ "redirect_url": "/windows/apps/develop/ui/windowing-overview",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/manage-submission-options.md",
- "redirect_url": "/windows/apps/publish/publish-your-app/manage-submission-options?pivots=store-installer-msix",
+ "source_path": "hub/apps/design/input/access-keys.md",
+ "redirect_url": "/windows/apps/develop/input/access-keys",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/msiexe/age-ratings.md",
- "redirect_url": "/windows/apps/publish/publish-your-app/age-ratings?pivots=store-installer-msi-exe",
+ "source_path": "hub/apps/design/input/convert-ink-to-text.md",
+ "redirect_url": "/windows/apps/develop/input/convert-ink-to-text",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/msiexe/app-submissions.md",
- "redirect_url": "/windows/apps/publish/publish-your-app/create-app-submission?pivots=store-installer-msi-exe",
+ "source_path": "hub/apps/design/input/custom-text-input.md",
+ "redirect_url": "/windows/apps/develop/input/custom-text-input",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/msiexe/create-app-store-listings.md",
- "redirect_url": "/windows/apps/publish/publish-your-app/create-app-store-listing?pivots=store-installer-msi-exe",
+ "source_path": "hub/apps/design/input/define-custom-recognition-constraints.md",
+ "redirect_url": "/windows/apps/develop/input/define-custom-recognition-constraints",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/msiexe/create-your-app-by-reserving-a-name.md",
- "redirect_url": "/windows/apps/publish/publish-your-app/reserve-your-apps-name?pivots=store-installer-msi-exe",
+ "source_path": "hub/apps/design/input/enable-continuous-dictation.md",
+ "redirect_url": "/windows/apps/develop/input/enable-continuous-dictation",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/msiexe/enter-app-properties.md",
- "redirect_url": "/windows/apps/publish/publish-your-app/enter-app-properties?pivots=store-installer-msi-exe",
+ "source_path": "hub/apps/design/input/focus-navigation.md",
+ "redirect_url": "/windows/apps/develop/input/focus-navigation",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/msiexe/manage-submission-options.md",
- "redirect_url": "/windows/apps/publish/publish-your-app/manage-submission-options?pivots=store-installer-msi-exe",
+ "source_path": "hub/apps/design/input/focus-navigation-programmatic.md",
+ "redirect_url": "/windows/apps/develop/input/focus-navigation-programmatic",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/msiexe/overview.md",
- "redirect_url": "/windows/apps/publish/publish-your-app/overview?pivots=store-installer-msi-exe",
+ "source_path": "hub/apps/design/input/gamepad-and-remote-interactions.md",
+ "redirect_url": "/windows/apps/develop/input/gamepad-and-remote-interactions",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/msiexe/provide-package-details.md",
- "redirect_url": "/windows/apps/publish/publish-your-app/upload-app-packages?pivots=store-installer-msi-exe",
+ "source_path": "hub/apps/design/input/gaze-interactions.md",
+ "redirect_url": "/windows/apps/develop/input/gaze-interactions",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/msiexe/set-app-pricing-and-availability.md",
- "redirect_url": "/windows/apps/publish/publish-your-app/price-and-availability?pivots=store-installer-msi-exe",
+ "source_path": "hub/apps/design/input/guidelines-for-cross-slide.md",
+ "redirect_url": "/windows/apps/develop/input/guidelines-for-cross-slide",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/msiexe/the-app-certification-process.md",
- "redirect_url": "/windows/apps/publish/publish-your-app/app-certification-process?pivots=store-installer-msi-exe",
+ "source_path": "hub/apps/design/input/guidelines-for-optical-zoom.md",
+ "redirect_url": "/windows/apps/develop/input/guidelines-for-optical-zoom",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/notes-for-certification.md",
- "redirect_url": "/windows/apps/publish/publish-your-app/notes-for-certification?pivots=store-installer-msix",
+ "source_path": "hub/apps/design/input/guidelines-for-panning.md",
+ "redirect_url": "/windows/apps/develop/input/guidelines-for-panning",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/opening-a-developer-account.md",
- "redirect_url": "/windows/apps/publish/partner-center/opening-a-developer-account?pivots=store-installer-msix",
+ "source_path": "hub/apps/design/input/guidelines-for-rotation.md",
+ "redirect_url": "/windows/apps/develop/input/guidelines-for-rotation",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/package-version-numbering.md",
- "redirect_url": "/windows/apps/publish/publish-your-app/package-version-numbering?pivots=store-installer-msix",
+ "source_path": "hub/apps/design/input/guidelines-for-targeting.md",
+ "redirect_url": "/windows/apps/develop/input/guidelines-for-targeting",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/partner-center-workspaces.md",
- "redirect_url": "/windows/apps/publish/partner-center/partner-center-workspaces?pivots=store-installer-msix",
+ "source_path": "hub/apps/design/input/guidelines-for-textselection.md",
+ "redirect_url": "/windows/apps/develop/input/guidelines-for-textselection",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/product-declarations.md",
- "redirect_url": "/windows/apps/publish/publish-your-app/product-declarations?pivots=store-installer-msix",
+ "source_path": "hub/apps/design/input/guidelines-for-visualfeedback.md",
+ "redirect_url": "/windows/apps/develop/input/guidelines-for-visualfeedback",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/pwa/create-your-app-by-reserving-a-name.md",
- "redirect_url": "/windows/apps/publish/publish-your-app/reseerve-your-apps-name",
+ "source_path": "hub/apps/design/input/handle-pointer-input.md",
+ "redirect_url": "/windows/apps/develop/input/handle-pointer-input",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/pwa/overview.md",
- "redirect_url": "/windows/apps/publish/publish-your-app/overview?pivots=store-installer-pwa",
+ "source_path": "hub/apps/design/input/identify-input-devices.md",
+ "redirect_url": "/windows/apps/develop/input/identify-input-devices",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/pwa/turn-your-website-pwa.md",
- "redirect_url": "/windows/apps/publish/publish-your-app/turn-your-website-pwa?pivots=store-installer-pwa",
+ "source_path": "hub/apps/design/input/index.md",
+ "redirect_url": "/windows/apps/develop/input/index",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/resolve-submission-errors.md",
- "redirect_url": "/windows/apps/publish/publish-your-app/resolve-submission-errors?pivots=store-installer-msix",
+ "source_path": "hub/apps/design/input/ink-toolbar.md",
+ "redirect_url": "/windows/apps/develop/input/ink-toolbar",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/set-add-on-pricing-and-availability.md",
- "redirect_url": "/windows/apps/publish/publish-your-app/price-and-availability?pivots=store-installer-add-on",
+ "source_path": "hub/apps/design/input/ink-walkthrough.md",
+ "redirect_url": "/windows/apps/develop/input/ink-walkthrough",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/set-and-schedule-app-pricing.md",
- "redirect_url": "/windows/apps/publish/publish-your-app/schedule-pricing-changes?pivots=store-installer-msix",
+ "source_path": "hub/apps/design/input/input-injection.md",
+ "redirect_url": "/windows/apps/develop/input/input-injection",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/set-app-pricing-and-availability.md",
- "redirect_url": "/windows/apps/publish/publish-your-app/price-and-availability?pivots=store-installer-msix",
+ "source_path": "hub/apps/design/input/input-method-editor-requirements.md",
+ "redirect_url": "/windows/apps/develop/input/input-method-editor-requirements",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/set-custom-permissions-for-account-users.md",
- "redirect_url": "/windows/apps/publish/partner-center/set-custom-permissions-for-account-users",
+ "source_path": "hub/apps/design/input/input-method-editors.md",
+ "redirect_url": "/windows/apps/develop/input/input-method-editors",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/set-your-add-on-product-id.md",
- "redirect_url": "/windows/apps/publish/publish-your-app/create-app-store-listing?pivots=store-installer-add-on",
+ "source_path": "hub/apps/design/input/input-primer.md",
+ "redirect_url": "/windows/apps/develop/input/input-primer",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/supported-languages.md",
- "redirect_url": "/windows/apps/publish/publish-your-app/supported-languages?pivots=store-installer-msix",
+ "source_path": "hub/apps/design/input/keyboard-accelerators.md",
+ "redirect_url": "/windows/apps/develop/input/keyboard-accelerators",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/the-app-certification-process.md",
- "redirect_url": "/windows/apps/publish/publish-your-app/app-certification-process?pivots=store-installer-msix",
+ "source_path": "hub/apps/design/input/keyboard-events.md",
+ "redirect_url": "/windows/apps/develop/input/keyboard-events",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/trademark-and-copyright-protection.md",
- "redirect_url": "/windows/apps/publish/partner-center/trademark-and-copyright-protection",
+ "source_path": "hub/apps/design/input/keyboard-interactions.md",
+ "redirect_url": "/windows/apps/develop/input/keyboard-interactions",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/upload-app-packages.md",
- "redirect_url": "/windows/apps/publish/publish-your-app/upload-app-packages?pivots=store-installer-msix",
+ "source_path": "hub/apps/design/input/manage-issues-with-audio-input.md",
+ "redirect_url": "/windows/apps/develop/input/manage-issues-with-audio-input",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/write-a-great-app-description.md",
- "redirect_url": "/windows/apps/publish/publish-your-app/write-great-app-description?pivots=store-installer-msix",
+ "source_path": "hub/apps/design/input/mouse-interactions.md",
+ "redirect_url": "/windows/apps/develop/input/mouse-interactions",
"redirect_document_id": false
},
{
- "source_path": "hub/apps/develop/widgets/widget-service-providers.md",
- "redirect_url": "/windows/apps/develop/widgets/widget-providers",
- "redirect_document_id": true
+ "source_path": "hub/apps/design/input/multiple-input-design-guidelines.md",
+ "redirect_url": "/windows/apps/develop/input/multiple-input-design-guidelines",
+ "redirect_document_id": false
},
{
- "source_path": "landing/arm-docs/dev-kit.md",
- "redirect_url": "/windows/arm/dev-kit/index",
- "redirect_document_id": true
+ "source_path": "hub/apps/design/input/pen-and-stylus-interactions.md",
+ "redirect_url": "/windows/apps/develop/input/pen-and-stylus-interactions",
+ "redirect_document_id": false
},
{
- "source_path": "uwp/publish/msiexe/store-submission-api.md",
- "redirect_url": "/windows/apps/publish/store-submission-api",
+ "source_path": "hub/apps/design/input/pen-haptics.md",
+ "redirect_url": "/windows/apps/develop/input/pen-haptics",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/msiexe/update-your-app.md",
- "redirect_url": "/windows/apps/publish/update-your-app",
+ "source_path": "hub/apps/design/input/radialcontroller-walkthrough.md",
+ "redirect_url": "/windows/apps/develop/input/radialcontroller-walkthrough",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/acquisitions-report.md",
- "redirect_url": "/windows/apps/publish/acquisitions-report",
+ "source_path": "hub/apps/design/input/respond-to-the-presence-of-the-touch-keyboard.md",
+ "redirect_url": "/windows/apps/develop/input/respond-to-the-presence-of-the-touch-keyboard",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/add-on-acquisitions-report.md",
- "redirect_url": "/windows/apps/publish/add-on-acquisitions-report",
+ "source_path": "hub/apps/design/input/save-and-load-ink.md",
+ "redirect_url": "/windows/apps/develop/input/save-and-load-ink",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/advertising-performance-report.md",
- "redirect_url": "/windows/apps/publish/advertising-performance-report",
+ "source_path": "hub/apps/design/input/set-speech-recognition-timeouts.md",
+ "redirect_url": "/windows/apps/develop/input/set-speech-recognition-timeouts",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/analytics.md",
- "redirect_url": "/windows/apps/publish/analytics",
+ "source_path": "hub/apps/design/input/specify-the-speech-recognizer-language.md",
+ "redirect_url": "/windows/apps/develop/input/specify-the-speech-recognizer-language",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/msiexe/analyze-app-performance.md",
- "redirect_url": "/windows/apps/publish/analyze-msi-exe/analyze-app-performance",
+ "source_path": "hub/apps/design/input/speech-interactions.md",
+ "redirect_url": "/windows/apps/develop/input/speech-interactions",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/msiexe/ratings-reviews-performance.md",
- "redirect_url": "/windows/apps/publish/analyze-msi-exe/ratings-reviews-performance",
+ "source_path": "hub/apps/design/input/speech-recognition.md",
+ "redirect_url": "/windows/apps/develop/input/speech-recognition",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/app-management-and-services.md",
- "redirect_url": "/windows/apps/publish/app-management-and-services",
+ "source_path": "hub/apps/design/input/text-handwriting-view.md",
+ "redirect_url": "/windows/apps/develop/input/text-handwriting-view",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/app-marketing-guidelines.md",
- "redirect_url": "/windows/apps/publish/app-marketing-guidelines",
+ "source_path": "hub/apps/design/input/text-scaling.md",
+ "redirect_url": "/windows/apps/develop/input/text-scaling",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/attract-customers-and-promote-your-apps.md",
- "redirect_url": "/windows/apps/publish/attract-customers-and-promote-your-apps",
+ "source_path": "hub/apps/design/input/touch-developer-guide.md",
+ "redirect_url": "/windows/apps/develop/input/touch-developer-guide",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/beta-testing-and-targeted-distribution.md",
- "redirect_url": "/windows/apps/publish/beta-testing-and-targeted-distribution",
+ "source_path": "hub/apps/design/input/touch-interactions.md",
+ "redirect_url": "/windows/apps/develop/input/touch-interactions",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/create-a-custom-app-promotion-campaign.md",
- "redirect_url": "/windows/apps/publish/create-a-custom-app-promotion-campaign",
+ "source_path": "hub/apps/design/input/touchpad-interactions.md",
+ "redirect_url": "/windows/apps/develop/input/touchpad-interactions",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/create-customer-groups.md",
- "redirect_url": "/windows/apps/publish/create-customer-groups",
+ "source_path": "hub/apps/design/input/use-input-scope-to-change-the-touch-keyboard.md",
+ "redirect_url": "/windows/apps/develop/input/use-input-scope-to-change-the-touch-keyboard",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/create-customer-segments.md",
- "redirect_url": "/windows/apps/publish/create-customer-segments",
+ "source_path": "hub/apps/design/input/windows-wheel-interactions.md",
+ "redirect_url": "/windows/apps/develop/input/windows-wheel-interactions",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/create-known-user-groups.md",
- "redirect_url": "/windows/apps/publish/create-known-user-groups",
+ "source_path": "hub/apps/design/input/drag-and-drop.md",
+ "redirect_url": "/windows/apps/develop/data/drag-and-drop",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/distribute-lob-apps-to-enterprises.md",
- "redirect_url": "/windows/apps/publish/distribute-lob-apps-to-enterprises",
+ "source_path": "hub/apps/design/input/cortana-deep-link-into-your-app.md",
+ "redirect_url": "/previous-versions/windows/uwp/ui-input/cortana-deep-link-into-your-app",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/download-analytic-reports.md",
- "redirect_url": "/windows/apps/publish/download-analytic-reports",
+ "source_path": "hub/apps/design/input/cortana-design-guidelines.md",
+ "redirect_url": "/previous-versions/windows/uwp/ui-input/cortana-design-guidelines",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/engage-with-your-customers.md",
- "redirect_url": "/windows/apps/publish/engage-with-your-customers",
+ "source_path": "hub/apps/design/input/cortana-dynamically-modify-voice-command-definition-vcd-phrase-lists.md",
+ "redirect_url": "/previous-versions/windows/uwp/ui-input/cortana-dynamically-modify-voice-command-definition-vcd-phrase-lists",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/feedback-report.md",
- "redirect_url": "/windows/apps/publish/feedback-report",
+ "source_path": "hub/apps/design/input/cortana-interactions.md",
+ "redirect_url": "/previous-versions/windows/uwp/ui-input/cortana-interactions",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/generate-preinstall-packages-for-oems.md",
- "redirect_url": "/windows/apps/publish/generate-preinstall-packages-for-oems",
+ "source_path": "hub/apps/design/input/cortana-interact-with-a-background-app.md",
+ "redirect_url": "/previous-versions/windows/uwp/ui-input/cortana-interact-with-a-background-app",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/generate-promotional-codes.md",
- "redirect_url": "/windows/apps/publish/generate-promotional-codes",
+ "source_path": "hub/apps/design/input/cortana-launch-a-background-app-with-voice-commands.md",
+ "redirect_url": "/previous-versions/windows/uwp/ui-input/cortana-launch-a-background-app-with-voice-commands",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/gradual-package-rollout.md",
- "redirect_url": "/windows/apps/publish/gradual-package-rollout",
+ "source_path": "hub/apps/design/input/cortana-launch-a-foreground-app-with-voice-commands.md",
+ "redirect_url": "/previous-versions/windows/uwp/ui-input/cortana-launch-a-foreground-app-with-voice-commands",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/health-report.md",
- "redirect_url": "/windows/apps/publish/health-report",
+ "source_path": "hub/apps/design/input/cortana-support-natural-language-voice-commands.md",
+ "redirect_url": "/previous-versions/windows/uwp/ui-input/cortana-support-natural-language-voice-commands",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/in-app-ads.md",
- "redirect_url": "/windows/apps/publish/in-app-ads",
+ "source_path": "hub/apps/design/motion/motion-dragdrop.md",
+ "redirect_url": "/previous-versions/windows/uwp/ui-input/motion-dragdrop",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/insights-report.md",
- "redirect_url": "/windows/apps/publish/insights-report",
+ "source_path": "hub/apps/design/motion/motion-edgebased.md",
+ "redirect_url": "/previous-versions/windows/uwp/ui-input/motion-edgebased",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/link-to-your-app.md",
- "redirect_url": "/windows/apps/publish/link-to-your-app",
+ "source_path": "hub/apps/design/motion/motion-fade.md",
+ "redirect_url": "/previous-versions/windows/uwp/ui-input/motion-fade",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/make-your-app-easier-to-promote.md",
- "redirect_url": "/windows/apps/publish/make-your-app-easier-to-promote",
+ "source_path": "hub/apps/design/motion/motion-list.md",
+ "redirect_url": "/previous-versions/windows/uwp/ui-input/motion-list",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/organizational-licensing.md",
- "redirect_url": "/windows/apps/publish/organizational-licensing",
+ "source_path": "hub/apps/design/motion/motion-pointer.md",
+ "redirect_url": "/previous-versions/windows/uwp/ui-input/",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/package-flights.md",
- "redirect_url": "/windows/apps/publish/package-flights",
+ "source_path": "hub/apps/design/motion/motion-popup-animations.md",
+ "redirect_url": "/previous-versions/windows/uwp/ui-input/motion-popup-animations",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/put-apps-and-add-ons-on-sale.md",
- "redirect_url": "/windows/apps/publish/put-apps-and-add-ons-on-sale",
+ "source_path": "hub/apps/design/motion/motion-reposition.md",
+ "redirect_url": "/previous-versions/windows/uwp/ui-input/motion-reposition",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/ratings-and-reviews.md",
- "redirect_url": "/windows/apps/publish/ratings-and-reviews",
+ "source_path": "hub/apps/winui/winui3/create-your-first-winui3-app.md",
+ "redirect_url": "/windows/apps/get-started/start-here",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/ratings-report.md",
- "redirect_url": "/windows/apps/publish/ratings-report",
+ "source_path": "hub/apps/windows-app-sdk/set-up-your-development-environment.md",
+ "redirect_url": "/windows/apps/get-started/start-here",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/respond-to-customer-feedback.md",
- "redirect_url": "/windows/apps/publish/respond-to-customer-feedback",
+ "source_path": "hub/apps/how-tos/hello-world-winui3.md",
+ "redirect_url": "/windows/apps/get-started/start-here",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "hub/apps/winui/index.md",
+ "redirect_url": "/windows/apps/winui/winui3/",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/respond-to-customer-reviews.md",
- "redirect_url": "/windows/apps/publish/respond-to-customer-reviews",
+ "source_path": "hub/apps/winui/winui3/release-notes/release-notes-08-preview.md",
+ "redirect_url": "/windows/windows-app-sdk/release-notes/project-reunion-0-8-preview",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/reviews-report.md",
- "redirect_url": "/windows/apps/publish/reviews-report",
+ "source_path": "hub/apps/winui/winui3/release-notes/winui3-project-reunion-0.5.md",
+ "redirect_url": "/windows/windows-app-sdk/release-notes/project-reunion-0-5",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/send-push-notifications-to-your-apps-customers.md",
- "redirect_url": "/windows/apps/publish/send-push-notifications-to-your-apps-customers",
+ "source_path": "hub/apps/winui/winui3/release-notes/winui3-project-reunion-0.5-preview.md",
+ "redirect_url": "/windows/windows-app-sdk/release-notes/project-reunion-0-5-preview",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/usage-report.md",
- "redirect_url": "/windows/apps/publish/usage-report",
+ "source_path": "hub/apps/windows-app-sdk/release-notes-archive/experimental-channel-0.8.md",
+ "redirect_url": "/windows/windows-app-sdk/release-notes/windows-app-sdk-0-8&pivots=experimental",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/use-targeted-offers-to-maximize-engagement-and-conversions.md",
- "redirect_url": "/windows/apps/publish/use-targeted-offers-to-maximize-engagement-and-conversions",
+ "source_path": "hub/apps/windows-app-sdk/release-notes-archive/experimental-channel-1-8.md",
+ "redirect_url": "/windows/windows-app-sdk/release-notes/windows-app-sdk-1-8&pivots=experimental",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/view-app-identity-details.md",
- "redirect_url": "/windows/apps/publish/view-app-identity-details",
+ "source_path": "hub/apps/windows-app-sdk/release-notes-archive/experimental-channel-1.0.md",
+ "redirect_url": "/windows/windows-app-sdk/release-notes/windows-app-sdk-1-8&pivots=experimental",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/xbox-analytics-report.md",
- "redirect_url": "/windows/apps/publish/xbox-analytics-report",
+ "source_path": "hub/apps/windows-app-sdk/release-notes-archive/experimental-channel-1.2.md",
+ "redirect_url": "/windows/windows-app-sdk/release-notes/windows-app-sdk-1-2&pivots=experimental",
"redirect_document_id": false
},
{
- "source_path": "hub/apps/publish/partner-center/associate-azure-ad-with-partner-center.md",
- "redirect_url": "/windows/apps/publish/partner-center/associate-existing-azure-ad-tenant-with-partner-center-account",
+ "source_path": "hub/apps/windows-app-sdk/release-notes-archive/experimental-channel-1.3.md",
+ "redirect_url": "/windows/windows-app-sdk/release-notes/windows-app-sdk-1-3&pivots=experimental",
"redirect_document_id": false
},
- {
- "source_path": "hub/apps/publish/partner-center/add-users-groups-and-azure-ad-applications.md",
- "redirect_url": "/windows/apps/publish/partner-center/overview-users-groups-azure-ad-applications",
+ {
+ "source_path": "hub/apps/windows-app-sdk/release-notes-archive/experimental-channel-1.4.md",
+ "redirect_url": "/windows/windows-app-sdk/release-notes/windows-app-sdk-1-4&pivots=experimental",
"redirect_document_id": false
},
{
- "source_path": "hub/apps/publish/partner-center/opening-a-developer-account.md",
- "redirect_url": "/windows/apps/publish/partner-center/partner-center-developer-account",
+ "source_path": "hub/apps/windows-app-sdk/release-notes-archive/experimental-channel-1.5.md",
+ "redirect_url": "/windows/windows-app-sdk/release-notes/windows-app-sdk-1-5&pivots=experimental",
"redirect_document_id": false
},
{
- "source_path": "hub/apps/publish/partner-center/set-custom-permissions-for-account-users.md",
- "redirect_url": "/windows/apps/publish/partner-center/overview-of-roles-and-permissions-for-account-users",
+ "source_path": "hub/apps/windows-app-sdk/release-notes-archive/experimental-channel-1.6.md",
+ "redirect_url": "/windows/windows-app-sdk/release-notes/windows-app-sdk-1-6&pivots=experimental",
"redirect_document_id": false
},
{
- "source_path": "hub/package-manager/package/winget-validation.md",
- "redirect_url": "/windows/package-manager/package/repository#validation-process",
+ "source_path": "hub/apps/windows-app-sdk/release-notes-archive/experimental-channel-1.7.md",
+ "redirect_url": "/windows/windows-app-sdk/release-notes/windows-app-sdk-1-7&pivots=experimental",
"redirect_document_id": false
},
{
- "source_path": "hub/package-manager/package/winget-validation-troubleshooter.md",
- "redirect_url": "/windows/package-manager/package/repository#submission-troubleshooting",
+ "source_path": "hub/apps/windows-app-sdk/release-notes-archive/preview-channel-1.7.md",
+ "redirect_url": "/windows/windows-app-sdk/release-notes/windows-app-sdk-1-7&pivots=preview",
"redirect_document_id": false
},
{
- "source_path": "hub/package-manager/package/binary-validation-errors.md",
- "redirect_url": "/windows/package-manager/package/repository#binary-validation-error",
+ "source_path": "hub/apps/windows-app-sdk/release-notes-archive/preview-channel-1-7.md",
+ "redirect_url": "/windows/windows-app-sdk/release-notes/windows-app-sdk-1-7&pivots=preview",
"redirect_document_id": false
},
{
- "source_path": "hub/dev-environment/tutorials.md",
- "redirect_url": "/windows/dev-environment",
+ "source_path": "hub/apps/windows-app-sdk/release-notes-archive/preview-channel-1.0.md",
+ "redirect_url": "/windows/windows-app-sdk/release-notes/windows-app-sdk-1-0&pivots=preview",
"redirect_document_id": false
},
{
- "source_path": "hub/dev-environment/dev-stories.md",
- "redirect_url": "/windows/dev-environment",
+ "source_path": "hub/apps/windows-app-sdk/release-notes-archive/preview-channel-1.1.md",
+ "redirect_url": "/windows/windows-app-sdk/release-notes/windows-app-sdk-1-1&pivots=preview",
"redirect_document_id": false
},
{
- "source_path": "hub/dev-environment/tips.md",
- "redirect_url": "/windows/dev-environment",
+ "source_path": "hub/apps/windows-app-sdk/release-notes-archive/preview-channel-1.2.md",
+ "redirect_url": "/windows/windows-app-sdk/release-notes/windows-app-sdk-1-2&pivots=preview",
"redirect_document_id": false
},
{
- "source_path": "hub/python/resources.md",
- "redirect_url": "/windows/python/web-frameworks",
+ "source_path": "hub/apps/windows-app-sdk/release-notes-archive/preview-channel-1.3.md",
+ "redirect_url": "/windows/windows-app-sdk/release-notes/windows-app-sdk-1-3&pivots=preview",
"redirect_document_id": false
},
{
- "source_path": "hub/powertoys/reportbug.md",
- "redirect_url": "https://github.com/microsoft/PowerToys/issues/new/choose",
+ "source_path": "hub/apps/windows-app-sdk/release-notes-archive/preview-channel-1.4.md",
+ "redirect_url": "/windows/windows-app-sdk/release-notes/windows-app-sdk-1-4&pivots=preview",
"redirect_document_id": false
},
{
- "source_path": "hub/android/xamarin-forms.md",
- "redirect_url": "/dotnet/maui/what-is-maui",
+ "source_path": "hub/apps/windows-app-sdk/release-notes-archive/preview-channel-1.5.md",
+ "redirect_url": "/windows/windows-app-sdk/release-notes/windows-app-sdk-1-5&pivots=preview",
"redirect_document_id": false
},
{
- "source_path": "uwp/publish/store-app-quality.md",
- "redirect_url": "/windows/apps/publish/store-app-quality",
+ "source_path": "hub/apps/windows-app-sdk/release-notes-archive/preview-channel-1.6.md",
+ "redirect_url": "/windows/windows-app-sdk/release-notes/windows-app-sdk-1-6&pivots=preview",
"redirect_document_id": false
- },
+ },
{
- "source_path": "uwp/publish/store-developer-code-of-conduct.md",
- "redirect_url": "/windows/apps/publish/store-developer-code-of-conduct",
+ "source_path": "hub/apps/windows-app-sdk/release-notes-archive/stable-channel-0.5.md",
+ "redirect_url": "/windows/windows-app-sdk/release-notes/windows-app-sdk-0-5&pivots=stable",
"redirect_document_id": false
- },
+ },
{
- "source_path": "uwp/publish/store-policies-and-code-of-conduct.md",
- "redirect_url": "/windows/apps/publish/store-policies-and-code-of-conduct",
+ "source_path": "hub/apps/windows-app-sdk/release-notes-archive/stable-channel-0.8.md",
+ "redirect_url": "/windows/windows-app-sdk/release-notes/windows-app-sdk-0-8&pivots=stable",
"redirect_document_id": false
- },
+ },
{
- "source_path": "uwp/publish/store-policies-change-history.md",
- "redirect_url": "/windows/apps/publish/store-policies-change-history",
+ "source_path": "hub/apps/windows-app-sdk/release-notes-archive/stable-channel-1-7.md",
+ "redirect_url": "/windows/windows-app-sdk/release-notes/windows-app-sdk-1-7&pivots=stable",
"redirect_document_id": false
- },
+ },
{
- "source_path": "uwp/publish/store-policies.md",
- "redirect_url": "/windows/apps/publish/store-policies",
+ "source_path": "hub/apps/windows-app-sdk/release-notes-archive/stable-channel-1.0.md",
+ "redirect_url": "/windows/windows-app-sdk/release-notes/windows-app-sdk-1-0&pivots=stable",
"redirect_document_id": false
- },
+ },
{
- "source_path": "uwp/publish/store-policy-archive/store-policy-7-11.md",
- "redirect_url": "/windows/apps/publish/store-policy-archive/store-policy-7-11",
+ "source_path": "hub/apps/windows-app-sdk/release-notes-archive/stable-channel-1.1.md",
+ "redirect_url": "/windows/windows-app-sdk/release-notes/windows-app-sdk-1-1&pivots=stable",
"redirect_document_id": false
- },
+ },
{
- "source_path": "uwp/publish/store-policy-archive/store-policy-7-12.md",
- "redirect_url": "/windows/apps/publish/store-policy-archive/store-policy-7-12",
+ "source_path": "hub/apps/windows-app-sdk/release-notes-archive/stable-channel-1.2.md",
+ "redirect_url": "/windows/windows-app-sdk/release-notes/windows-app-sdk-1-2&pivots=stable",
"redirect_document_id": false
- },
+ },
{
- "source_path": "uwp/publish/store-policy-archive/store-policy-7-13.md",
- "redirect_url": "/windows/apps/publish/store-policy-archive/store-policy-7-13",
+ "source_path": "hub/apps/windows-app-sdk/release-notes-archive/stable-channel-1.3.md",
+ "redirect_url": "/windows/windows-app-sdk/release-notes/windows-app-sdk-1-3&pivots=stable",
"redirect_document_id": false
- },
+ },
{
- "source_path": "uwp/publish/store-policy-archive/store-policy-7-14.md",
- "redirect_url": "/windows/apps/publish/store-policy-archive/store-policy-7-14",
+ "source_path": "hub/apps/windows-app-sdk/release-notes-archive/stable-channel-1.4.md",
+ "redirect_url": "/windows/windows-app-sdk/release-notes/windows-app-sdk-1-4&pivots=stable",
"redirect_document_id": false
- },
+ },
{
- "source_path": "uwp/publish/store-policy-archive/store-policy-7-15.md",
- "redirect_url": "/windows/apps/publish/store-policy-archive/store-policy-7-15",
+ "source_path": "hub/apps/windows-app-sdk/release-notes-archive/stable-channel-1.5.md",
+ "redirect_url": "/windows/windows-app-sdk/release-notes/windows-app-sdk-1-5&pivots=stable",
"redirect_document_id": false
- },
+ },
{
- "source_path": "uwp/publish/store-policy-archive/store-policy-7-16.md",
- "redirect_url": "/windows/apps/publish/store-policy-archive/store-policy-7-16",
+ "source_path": "hub/apps/windows-app-sdk/release-notes-archive/stable-channel-1.6.md",
+ "redirect_url": "/windows/windows-app-sdk/release-notes/windows-app-sdk-1-6&pivots=stable",
"redirect_document_id": false
- },
+ },
{
- "source_path": "uwp/publish/store-policy-archive/store-policy-7-6.md",
- "redirect_url": "/windows/apps/publish/store-policy-archive/store-policy-7-6",
+ "source_path": "hub/apps/windows-app-sdk/experimental-channel.md",
+ "redirect_url": "/windows/apps/windows-app-sdk/release-channels",
"redirect_document_id": false
- },
+ },
{
- "source_path": "uwp/publish/store-policy-archive/store-policy-7-7.md",
- "redirect_url": "/windows/apps/publish/store-policy-archive/store-policy-7-7",
+ "source_path": "hub/apps/windows-app-sdk/preview-channel.md",
+ "redirect_url": "/windows/apps/windows-app-sdk/release-channels",
"redirect_document_id": false
- },
+ },
{
- "source_path": "uwp/publish/index.md",
- "redirect_url": "/windows/apps/publish/",
+ "source_path": "hub/apps/windows-app-sdk/stable-channel.md",
+ "redirect_url": "/windows/apps/windows-app-sdk/release-channels",
"redirect_document_id": false
- },
+ },
{
- "source_path": "hub/apps/publish/update-your-app.md",
- "redirect_url": "/windows/apps/publish/publish-your-app/publish-update-to-your-app-on-store?pivots=store-installer-msi-exe",
+ "source_path": "hub/apps/get-started/make-apps-great-for-windows.md",
+ "redirect_url": "/windows/apps/get-started/best-practices",
"redirect_document_id": false
}
]
-}
-
-
-
+}
\ No newline at end of file
diff --git a/.vscode/launch.json b/.vscode/launch.json
deleted file mode 100644
index a3d5a26060..0000000000
--- a/.vscode/launch.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "version": "0.2.0",
- "configurations": [
- {
- "name": "Launch Extension",
- "type": "extensionHost",
- "request": "launch",
- "runtimeExecutable": "${execPath}",
- "args": [
- "--extensionDevelopmentPath=${workspaceRoot}"
- ],
- "stopOnEntry": false,
- "sourceMaps": true,
- "outDir": "out",
- "preLaunchTask": "npm"
- }
- ]
-}
\ No newline at end of file
diff --git a/SECURITY.md b/SECURITY.md
new file mode 100644
index 0000000000..e138ec5d6a
--- /dev/null
+++ b/SECURITY.md
@@ -0,0 +1,41 @@
+
+
+## Security
+
+Microsoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), and [our GitHub organizations](https://opensource.microsoft.com/).
+
+If you believe you have found a security vulnerability in any Microsoft-owned repository that meets [Microsoft's definition of a security vulnerability](https://aka.ms/opensource/security/definition), please report it to us as described below.
+
+## Reporting Security Issues
+
+**Please do not report security vulnerabilities through public GitHub issues.**
+
+Instead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report).
+
+If you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com). If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://aka.ms/opensource/security/pgpkey).
+
+You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://aka.ms/opensource/security/msrc).
+
+Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue:
+
+ * Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.)
+ * Full paths of source file(s) related to the manifestation of the issue
+ * The location of the affected source code (tag/branch/commit or direct URL)
+ * Any special configuration required to reproduce the issue
+ * Step-by-step instructions to reproduce the issue
+ * Proof-of-concept or exploit code (if possible)
+ * Impact of the issue, including how an attacker might exploit the issue
+
+This information will help us triage your report more quickly.
+
+If you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://aka.ms/opensource/security/bounty) page for more details about our active programs.
+
+## Preferred Languages
+
+We prefer all communications to be in English.
+
+## Policy
+
+Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://aka.ms/opensource/security/cvd).
+
+
diff --git a/auto-publish.yml b/auto-publish.yml
new file mode 100644
index 0000000000..4ec385b335
--- /dev/null
+++ b/auto-publish.yml
@@ -0,0 +1,26 @@
+
+
+trigger:
+- main
+
+jobs:
+- job: MergeMainToLive
+ pool:
+ vmImage: 'ubuntu-latest'
+ steps:
+ - checkout: self
+ persistCredentials: true
+ - script: |
+ git config --global user.name "Quinn Radich"
+ git config --global user.email "quinnradich@users.noreply.github.com"
+ git checkout main
+ git checkout live
+ git merge main --no-ff --no-commit
+ if [ $? -eq 0 ]; then
+ git commit -m "Merged main into live"
+ git push origin live
+ else
+ echo "Error merging main to live"
+ exit 1
+ fi
+ displayName: 'Merge main to live if main has changed'
diff --git a/hub/advanced-settings/developer-mode.md b/hub/advanced-settings/developer-mode.md
new file mode 100644
index 0000000000..460736cd2a
--- /dev/null
+++ b/hub/advanced-settings/developer-mode.md
@@ -0,0 +1,84 @@
+---
+ms.assetid: 54973C62-9669-4988-934E-9273FB0425FD
+title: Settings for developers
+description: Activate Developer Mode on your PC to develop apps.
+keywords: Developer mode, Visual Studio, enable device
+ms.date: 11/12/2025
+ms.topic: how-to
+---
+
+# Settings for developers
+
+The **System > Advanced** page in Windows settings includes Developer Mode and additional features that you can use when Developer Mode is enabled. Developer Mode unlocks tools, settings, and features designed for building, deploying, and testing apps on Windows.
+
+:::image type="content" source="images/for-developers.png" alt-text="A screenshot of Windows Advanced settings for developers, showing Developer Mode, Device Portal, and Device discovery.":::
+
+> [!NOTE]
+> Prior to Windows 11 25H2, these settings appear on the **For developers** page in Windows settings. In Windows 11 25H2 and later, they appear in the **For developers** section of the [Advanced settings](index.md) page.
+
+## Enable Developer Mode
+
+If you're writing software with Visual Studio, you *will* need to enable Developer Mode on both the development PC and on any devices you'll use to test your code.
+
+> [!IMPORTANT]
+> If you're using your computer for ordinary day-to-day activities (such as gaming, web browsing, email, or Office apps), there is no need to activate Developer Mode. If you're trying to fix an issue with your computer, check out [Windows help](/windows).
+
+To enable Developer Mode, or access other settings:
+
+1. Open Windows Settings.
+2. Search for **Advanced** or go to **System > Advanced**, then scroll to the **For developers** section.
+3. Toggle the Developer Mode setting, at the top of the **For developers** section.
+4. Read the disclaimer. Click **Yes** to accept the change.
+
+ :::image type="content" source="images/use-developer-features.png" alt-text="Developer Mode dialog in Visual Studio":::
+
+> [!NOTE]
+> Enabling Developer mode requires administrator access. If your device is owned by an organization, this option may be disabled.
+
+If you try to build a Windows project in Visual Studio when Developer Mode *isn't* enabled, the following dialog appears in Visual Studio:
+
+:::image type="content" source="images/enable-developer-mode-dialog.jpg" alt-text="Developer Mode dialog in Visual Studio that says Developer Mode needs to be enabled, with a link to settings for developers.":::
+
+If you see this dialog, select **settings for developers** to open the **System > Advanced** settings page.
+
+> [!NOTE]
+> You can go to the **Advanced** settings page at any time to *enable* or *disable* Developer Mode.
+
+## Developer Mode features
+
+Developer Mode replaces the requirements for a developer license. In addition to sideloading, the Developer Mode setting enables debugging and additional deployment options. This includes starting an SSH service to allow deployment to this device. In order to stop this service, you need to disable Developer Mode.
+
+When you enable Developer Mode on desktop, a package of features is installed, including:
+
+- **Windows Device Portal**: Device Portal is only enabled (and firewall rules are only configured for it) when the **Enable Device Portal** option is turned on.
+- Installs and configures firewall rules for SSH services that allow remote installation of apps. Enabling **Device Discovery** will turn on the SSH server.
+
+> [!NOTE]
+> _Device Portal_ and _Device discovery_ are useful when you need to develop on one machine, but deploy your app to another machine for testing. For example, if you need to deploy your app to a tablet to test a touch-optimized tablet user interface.
+
+### Device Portal
+
+To learn more about Device Portal, see [Windows Device Portal overview](/windows/uwp/debug-test-perf/device-portal) and [Device Portal for desktop](/windows/uwp/debug-test-perf/device-portal-desktop).
+
+### Device Discovery
+
+When you enable Device Discovery, you're allowing your device to be visible to other devices on the network through mDNS. This feature also allows you to get the SSH PIN for pairing to the device by pressing the **Pair** button exposed immediately after Device Discovery is enabled. This PIN prompt must be displayed on the screen in order to complete your first Visual Studio deployment targeting the device.
+
+:::image type="content" source="images/pair-device-with-device-discovery.png" alt-text="A screenshot of the Pair device dialog that displays the SSH Pin for device pairing.":::
+
+You should enable Device Discovery only if you intend to make the device a deployment target. For example, if you use Device Portal to deploy an app to a tablet for testing, you need to enable Device Discovery on the tablet, but not on your development PC.
+
+#### SSH
+
+SSH services are enabled when you enable Device Discovery on your device. This is used when your device is a remote deployment target for MSIX packaged applications. The names of the services are *SSH Server Broker* and *SSH Server Proxy*.
+
+> [!NOTE]
+> This is not Microsoft's OpenSSH implementation, which you can find on [GitHub](https://github.com/PowerShell/Win32-OpenSSH).
+
+In order to take advantage of the SSH services, you can enable Device Discovery to allow pin pairing. If you intend to run another SSH service, you can set this up on a different port or turn off the Developer Mode SSH services. To turn off the SSH services, turn off Device Discovery.
+
+SSH login is done via the *DevToolsUser* account, which accepts a password for authentication. This password is the PIN displayed on the device after pressing the Device Discovery **Pair** button, and it's only valid while the PIN is displayed. A SFTP subsystem is also enabled for manual management of the `DevelopmentFiles` folder where loose file deployments are installed from Visual Studio.
+
+##### Caveats for SSH usage
+
+The existing SSH server used in Windows is not yet protocol compliant. Using an SFTP or SSH client may require special configuration. In particular, the SFTP subsystem runs at version 3 or less, so any connecting client should be configured to expect an old server. The SSH server on older devices uses `ssh-dss` for public key authentication (which OpenSSH has deprecated). To connect to such devices, the SSH client must be manually configured to accept `ssh-dss`.
diff --git a/hub/advanced-settings/fe-version-control.md b/hub/advanced-settings/fe-version-control.md
new file mode 100644
index 0000000000..777c72a05e
--- /dev/null
+++ b/hub/advanced-settings/fe-version-control.md
@@ -0,0 +1,68 @@
+---
+title: File Explorer Version Control Integration
+description: Learn how to use File Explorer and version control integration inside Windows Advanced settings.
+ms.reviewer: cinnamon
+ms.topic: article
+ms.date: 01/22/2026
+---
+
+# File Explorer version control integration
+
+**File Explorer version control integration** provides version control information directly in File Explorer. This includes information such as the branch name, last commit author, last commit message, and more.
+
+> [!NOTE]
+> As of right now, File Explorer version control integration only supports Git. The Advanced Settings system component is extensible to allow for additional version control types.
+
+
+
+> [!IMPORTANT]
+> Organizational policies can disable or hide Advanced settings controls. If a toggle is unavailable, contact your administrator. See related guidance in [Group Policy](../dev-drive/group-policy.md).
+
+## Enable version control indicators
+
+1. Open Settings and go to **System > Advanced**.
+2. Under **File Explorer + version control**, select **Add folders** and choose the repositories you want File Explorer to recognize.
+3. Return to File Explorer and open one of the selected folders to see repository details.
+
+> [!TIP]
+> If indicators do not appear immediately, close and reopen File Explorer.
+
+## How to identify repositories
+
+Windows has to know which folders are source code repositories so File Explorer can display the version control information. You can select your repository folders in Windows Advanced Settings > File Explorer settings under the File Explorer + version control header.
+
+
+
+## What appears in File Explorer
+
+When you open a selected repository folder in File Explorer, version control details are surfaced in the Explorer UI, including:
+
+- Branch name
+- Last commit author
+- Last commit message
+- Commit timestamp
+
+## Limitations
+
+- Git repositories are supported; other systems may require future extensions.
+- Very large repositories or folders with extensive generated content can delay indicators.
+- Nested repositories and submodules may not display details consistently.
+- Network shares, symlinked paths, or WSL-mounted locations may not surface metadata.
+- Case-sensitive filesystems and uncommon file attributes can affect detection.
+
+> [!NOTE]
+> To improve performance, consider excluding large generated folders (for example, `node_modules`, build outputs) when selecting repositories.
+
+## Troubleshooting
+
+- Indicators not showing: Confirm the folder contains a `.git` directory and is selected under **File Explorer + version control** in Advanced settings; restart File Explorer.
+- Toggles disabled: Device may be managed by policy. See [Group Policy](../dev-drive/group-policy.md) and contact your administrator.
+- Slow or inconsistent updates: Reduce very large folders from selection or move the repository to a local disk path.
+- Conflicts with alternative SSH services: If using Developer Mode SSH features, ensure ports and services do not interfere with repository access.
+
+## Extensibility and feedback
+
+The Windows Advanced Settings system component is open source and designed to support additional version control providers.
+
+- Learn more or request features on [GitHub](https://github.com/microsoft/windowsAdvancedSettings).
+- For broader context on Advanced settings, see the [Advanced Windows Settings](index.md) landing page.
diff --git a/hub/advanced-settings/images/enable-developer-mode-dialog.jpg b/hub/advanced-settings/images/enable-developer-mode-dialog.jpg
new file mode 100644
index 0000000000..f8fd8304bb
Binary files /dev/null and b/hub/advanced-settings/images/enable-developer-mode-dialog.jpg differ
diff --git a/hub/advanced-settings/images/for-developers.png b/hub/advanced-settings/images/for-developers.png
new file mode 100644
index 0000000000..a3d99a2b9c
Binary files /dev/null and b/hub/advanced-settings/images/for-developers.png differ
diff --git a/hub/advanced-settings/images/pair-device-with-device-discovery.png b/hub/advanced-settings/images/pair-device-with-device-discovery.png
new file mode 100644
index 0000000000..bbb348f7e8
Binary files /dev/null and b/hub/advanced-settings/images/pair-device-with-device-discovery.png differ
diff --git a/hub/advanced-settings/images/use-developer-features.png b/hub/advanced-settings/images/use-developer-features.png
new file mode 100644
index 0000000000..0c723c299b
Binary files /dev/null and b/hub/advanced-settings/images/use-developer-features.png differ
diff --git a/hub/advanced-settings/index.md b/hub/advanced-settings/index.md
new file mode 100644
index 0000000000..5499434c9c
--- /dev/null
+++ b/hub/advanced-settings/index.md
@@ -0,0 +1,49 @@
+---
+title: Advanced Windows Settings
+description: Learn about the settings provided in the Advanced page of Windows settings.
+ms.reviewer: cinnamon
+ms.topic: article
+ms.date: 01/22/2026
+---
+
+# Advanced Windows Settings
+
+**Advanced Windows settings** is a redesign of the original **For Developers** page in Windows settings with additional settings to help you be more productive.
+
+## What's included
+
+- **Developer Mode**: Unlock tools and features for building, deploying, and testing apps on Windows. See [Settings for developers](developer-mode.md).
+- **Sudo for Windows**: Run elevated commands from an unelevated console session. Available on Windows 11, version 24H2 and later. See [Sudo for Windows](sudo/index.md).
+- **File Explorer version control integration (PREVIEW)**: View branch, commit, and author details directly in File Explorer. See [File Explorer version control integration](fe-version-control.md).
+
+## Find Advanced settings
+
+- Open Settings and navigate to **System > Advanced**.
+
+## Availability notes
+
+- In Windows 11, version 25H2 and later, the former **For developers** settings are now surfaced under the **Advanced** page.
+- Sudo for Windows is available in Windows 11, version 24H2 and later. See [Sudo for Windows](sudo/index.md).
+- File Explorer version control integration is currently available via the Windows Insider Beta Channel. See [File Explorer version control integration (PREVIEW)](fe-version-control.md) for enrollment and setup details.
+
+## Troubleshooting
+
+- **Options missing or disabled**: Devices managed by an organization may apply policies that disable Advanced settings toggles. See related [Group Policy guidance](../dev-drive/group-policy.md).
+- **Administrator required**: Enabling Developer Mode requires local administrator privileges.
+- **Feature not found**: Ensure your device is updated to a supported Windows version. Preview features may require joining a Windows Insider channel.
+
+## Feedback and contributions
+
+- The Windows Advanced Settings system component is open source. Share feedback or feature requests by opening an issue on [GitHub Issues](https://github.com/microsoft/windowsAdvancedSettings/issues).
+
+
+
+## FAQ
+
+### Why was For Developers renamed to Advanced?
+
+Most of the settings available within the For Developers page are useful for other advanced Windows users as well. In order to help all users discover these settings, the page was redesigned and renamed to Advanced.
+
+## Windows Advanced Settings system component open source repository
+
+To provide enhanced functionality to the Advanced settings page, there is an open-source system component that enables features like [File Explorer version control integration](fe-version-control.md). We welcome your contributions and feedback, and the source code for the Windows Advanced Settings system component is available on [GitHub](https://github.com/microsoft/windowsAdvancedSettings).
diff --git a/hub/advanced-settings/sudo/index.md b/hub/advanced-settings/sudo/index.md
new file mode 100644
index 0000000000..7b5c3f0813
--- /dev/null
+++ b/hub/advanced-settings/sudo/index.md
@@ -0,0 +1,97 @@
+---
+title: Sudo for Windows
+description: Learn how to use sudo in your command line to run elevated commands (as an administrator) directly from an unelevated console session on Windows.
+ms.reviewer: jordiadoumie
+ms.topic: article
+ms.date: 11/21/2024
+no-loc: [Gerardo Grignoli]
+---
+
+# Sudo for Windows
+
+**Sudo for Windows** is a new way for users to run elevated commands (as an administrator) directly from an unelevated console session on Windows.
+
+[Read the announcement](https://devblogs.microsoft.com/commandline/introducing-sudo-for-windows/), which includes a demo video and deep-dive into how Sudo for Windows works.
+
+## Prerequisites
+
+The Sudo for Windows command is available in [Windows 11, version 24H2](https://support.microsoft.com/topic/windows-11-version-24h2-update-history-0929c747-1815-4543-8461-0160d16f15e5) or higher. ([Check for Windows updates](ms-settings:windowsupdate)).
+
+> [!NOTE]
+> Sudo for Windows is not yet available for Windows 10, but may be in the future.
+
+## How to enable Sudo for Windows
+
+To enable Sudo for Windows, open `Settings > System > For Developers` and set **Enable sudo** to **On**.
+
+
+
+>[!WARNING]
+> Sudo for Windows can be used as a potential escalation of privilege vector when enabled in certain configurations. You should make sure to be aware of the [security considerations](#security-considerations) when enabling the sudo command on your machine.
+
+## How to configure Sudo for Windows
+
+Sudo for Windows currently supports three different configuration options. The configuration can be set from the `Settings > For Developers` menu or programmatically, using the command line. The configuration options include:
+
+- **In a new window** (`forceNewWindow`): The `forceNewWindow` configuration option is the default configuration option for Sudo for Windows. Use `sudo` in this configuration to run the command in a new window. This is similar to the behavior of the `runas /user:admin` command.
+
+- **Input closed** (`disableInput`): The `disableInput` configuration option will run the elevated process in the current window, but with the input handle closed. This means that the elevated process will not be able to receive input from the current console window. This is useful for scenarios where you want to run a command as an administrator, but do not want to allow the command to receive input from the current console window. This configuration option provides some of the convenience of the `inline` configuration option while mitigating some of the associated [security risks](#security-considerations).
+
+- **Inline** (`normal`): The `normal` configuration option is most similar to how sudo behaves on other operating systems. This configuration will run the elevated process in the current window and the process will be able to receive input from the current console session. This is useful for scenarios where you want to run a command as an administrator and want to allow the command to receive input from the current console window. This configuration option provides the most convenience, but you should only choose this option if you are familiar with the associated [security risks](#security-considerations).
+
+You can select among these configurations from the `Settings > For Developers` menu or change the configuration programmatically, in an elevated command line (admin console), using:
+
+- `sudo config --enable `
+
+Update `` to either `forceNewWindow`, `disableInput`, or `normal`.
+
+## How to use Sudo for Windows
+
+To use Sudo for Windows, simply prepend `sudo` to the command you want to run as an administrator. For example, to run `netstat -ab` as an administrator, you would run `sudo netstat -ab` in your console window.
+
+### Common developer scenarios
+
+Here are some common scenarios where developers might use sudo:
+
+- **Editing system files**: `sudo notepad C:\Windows\System32\drivers\etc\hosts`
+- **Installing packages globally**: `sudo npm install -g package-name`
+- **Running administrative tools**: `sudo diskpart`
+
+> [!NOTE]
+> For development work involving system directories like `C:\Windows\`, consider using development environments or alternative approaches when possible. Sudo should be used judiciously and only when elevated permissions are truly necessary.
+
+Because `sudo` elevates the targeted process to run with administrator-level permission, a prompt will open asking you to verify that you want to continue.
+
+## Security Considerations
+
+There are risks associated with running sudo in the **Input closed** (`disableInput`) or **Inline** (`normal`) configurations. It is possible for malicious processes to attempt to drive the elevated process using the connection established by the unelevated sudo.exe and the elevated sudo.exe process.
+
+The `disableInput` configuration option mitigates risk by closing the input handle. Disconnecting the input handle from the current console window means that unelevated processes cannot send input to the elevated process.
+
+The `inline` configuration option runs the elevated process in the current window and the process is able to receive input from the current console session. An unelevated process can send input to the elevated process within the same console window or get information from the output in the current window in this configuration.
+
+## FAQ
+
+### How is Sudo for Windows different from the existing `runas` command?
+
+ The `sudo` command offers a way to quickly elevate a command as administrator from your current unelevated command line context and is familiar to some users coming from other operating systems. The `runas` command offers a way to run programs as any user, including administrator if you so choose. At this point in time, the `sudo` command on Windows does not support running programs as other users. Other key differences between `sudo` and `runas` include:
+
+- `runas` allows you to run programs as other users, including but not limited to as administrator. This functionality is on the roadmap for the sudo command, but does not yet exist.
+
+- `sudo` allows you to quickly elevate a process (as administrator):
+ - You can choose to do so in a new window, which resembles the `runas` administrator flow.
+ - You can choose to connect the elevated process to the current console window with the `disableInput` and `normal` configuration options. This is not supported with `runas`.
+
+- `runas` can prompt users for a password in the command-line.
+
+- `sudo` can only be elevated via the User Account Control (UAC) security feature designed to protect the operating system from unauthorized changes using verification prompt.
+
+You should consider your particular use-case and plan to use the command that best meets your needs. You should also consider the security implications of running sudo in the `disableInput` and `normal` modes. The default `forceNewWindow` configuration option is recommended unless you are familiar and comfortable with the risks associated with the other `sudo` configurations.
+
+## Sudo for Windows open source repository
+
+Sudo for Windows is open source and welcomes your contributions and feedback. You can find the source code for Sudo for Windows on [GitHub](https://github.com/microsoft/sudo).
+
+## Additional functionality
+
+If you’re looking for additional functionality that Sudo for Windows does not provide, check out [gsudo by Gerardo Grignoli](https://github.com/gerardog/gsudo) which has a number of additional features and configuration options or check out other solutions from the community.
diff --git a/hub/android/defender-settings.md b/hub/android/defender-settings.md
deleted file mode 100644
index 525ca89677..0000000000
--- a/hub/android/defender-settings.md
+++ /dev/null
@@ -1,73 +0,0 @@
----
-title: Add Windows Defender exceptions for Android
-description: Learn how to improve performance speed and build times by updating Windows Defender settings to exclude checking specified file types.
-author: mattwojo
-ms.author: mattwoj
-manager: jken
-ms.topic: article
-keywords: android, windows defender, exceptions, configuration, exclusions, %USERPROFILE%, devenv.exe, performance, speed, build, gradle
-ms.date: 04/28/2020
----
-
-# Add Windows Defender exceptions to speed up Android build performance
-
-This guide covers how to set up exclusions in your Windows Defender security settings in order to improve your build times when developing Android apps using a Windows machine.
-
-## Windows Defender Overview
-
-In Windows 10, version 1703 and later, the [Windows Defender Antivirus](/windows/security/threat-protection/windows-defender-antivirus/windows-defender-security-center-antivirus) app is part of Windows Security. Windows Defender aims to keep your PC safe with built-in, real-time protection against viruses, ransomware, spyware, and other security threats.
-
-**However**, Windows Defender's real-time protection will also dramatically slow file system access and build speed when developing Android apps.
-
-During the Android build process, many files are created on your computer. With antivirus real-time scanning enabled, the build process will halt each time a new file is created while the antivirus scans that file.
-
-Fortunately, Windows Defender has the capability to exclude files, project directories, or file types that you know to be secure from it's antivirus scanning process.
-
-> [!WARNING]
-> To ensure that your computer is safe from malicious software, you should not completely disable real-time scanning or your Windows Defender antivirus software.
-> Defining exclusions lowers the protection offered by Defender. You should always evaluate the risks that are associated with implementing exclusions, and only exclude files that you are confident are not malicious.
-
-## How to add exclusions to Windows Defender
-
-To add exclusions in the [Windows Defender Security Center](windowsdefender://):
-
-1. Select the Windows menu **Start** button
-2. Enter **Windows Security**
-3. Select **Virus and threat protection**
-4. Select **Manage settings** under **Virus & threat protection settings**
-5. Scroll to the **Exclusions** heading and select **Add or remove exclusions**
-6. Select **+ Add an exclusion**. You will then need to choose whether the exclusion you wish to add is a **File**, **Folder**, **File type**, or **Process**.
-
-
-
-## Exclusions to consider for Android development
-
-The following list shows the default location of each Android Studio directory that could be added as an exclusion from Windows Defender real-time scanning:
-
-- Gradle cache: `%USERPROFILE%\.gradle`
-- Android Studio projects: `%USERPROFILE%\AndroidStudioProjects`
-- Android SDK: `%USERPROFILE%\AppData\Local\Android\SDK`
-- Android Studio system files: `%USERPROFILE%\.AndroidStudio\system`
-
-These directory locations may not apply to your project if you have not used the default locations set by Android Studio or if you have downloaded a project from GitHub (for example). Consider adding an exclusion to the directory of your current Android development project, wherever that may be located.
-
-Additional exclusions you may want to consider include:
-
-- Visual Studio dev environment process: `devenv.exe`
-- Visual Studio build process: `msbuild.exe`
-- JetBrains directory: `%LOCALAPPDATA%\JetBrains\`
-
-For more information on adding antivirus scanning exclusions, including how to customize directory locations for Group Policy controlled environments, see the Antivirus Impact section of the [Android Studio documentation](https://developer.android.com/studio/intro/studio-config#antivirus-impact).
-
-Please remember that adding exclusions lowers the protection offered by Defender. You should always evaluate the risks that are associated with implementing exclusions, and only exclude files that you are confident are not malicious.
-
-> [!Note]
-> Daniel Knoodle has set up a GitHub repo with recommended scripts to add [Windows Defender exclusions for Visual Studio 2017](https://gist.github.com/dknoodle/5a66b8b8a3f2243f4ca5c855b323cb7b#file-windows-defender-exclusions-vs-2017-ps1-L10).
-
-## Additional resources
-
-- [Develop Dual-screen apps for Android and get the Surface Duo device SDK](/dual-screen/android/)
-
-- [Add Windows Defender exclusions to improve performance](./defender-settings.md)
-
-- [Enable Virtualization support to improve emulator performance](./emulator.md#enable-virtualization-support)
diff --git a/hub/android/emulator.md b/hub/android/emulator.md
deleted file mode 100644
index 5daef664ff..0000000000
--- a/hub/android/emulator.md
+++ /dev/null
@@ -1,112 +0,0 @@
----
-title: Test on an Android device or emulator
-description: Test your app on an Android device or emulator from Windows and enable virtualization with hyper-v and Windows Hypervisor Platform (WHPX).
-author: mattwojo
-ms.author: mattwoj
-manager: jken
-ms.topic: article
-keywords: android, windows, emulator, virtual device, device setup, enable device, developer, configuration, virtualization, visual studio, hyper-v, intel, haxm, amd, Windows Hypervisor Platform, WHPX
-ms.date: 04/28/2020
----
-
-# Test on an Android device or emulator
-
-There are several ways to test and debug your Android application using a real device or emulator on your Windows machine. We have outlined a few recommendations in this guide.
-
-## Run on a real Android device
-
-To run your app on a real Android device, you will first need to enable your Android device for development. Developer options on Android have been hidden by default since version 4.2 and enabling them can vary based on the Android version.
-
-### Enable your device for development
-
-For a device running a recent version of Android 9.0+:
-
-1. Connect your device to your Windows development machine with a USB cable. You may receive a notification to install a USB driver.
-2. Open the **Settings** screen on your Android device.
-3. Select **About phone**.
-4. Scroll to the bottom and tap **Build number** seven times, until **You are now a developer!** is visible.
-5. Return to the previous screen, select **System**.
-6. Select **Advanced**, scroll to the bottom, and tap **Developer options**.
-7. In the **Developer options** window, scroll down to find and enable **USB debugging**.
-
-For a device running an older version of Android, see [Set Up Device for Development](/xamarin/android/get-started/installation/set-up-device-for-development).
-
-### Run your app on the device
-
-1. In the Android Studio toolbar, select your app from the **run configurations** drop-down menu.
-
- 
-
-2. From the **target device** drop-down menu, select the device that you want to run your app on.
-
- 
-
-3. Select Run ▷. This will launch the app on your connected device.
-
-## Run your app on a virtual Android device using an emulator
-
-The first thing to know about running an Android emulator on your Windows machine is that regardless of your IDE (Android Studio, Visual Studio, etc), emulator performance is vastly improved by enabling virtualization support.
-
-### Enable virtualization support
-
-Before creating a virtual device with the Android emulator, it is recommended that you enable virtualization by turning on the Hyper-V and Windows Hypervisor Platform (WHPX) features. This will allow your computer's processor to significantly improve the execution speed of the emulator.
-
-> To run Hyper-V and Windows Hypervisor Platform, your computer must:
->
-> * Have 4GB of memory available
-> * Have a 64-bit Intel processor or AMD Ryzen CPU with Second Level Address Translation (SLAT)
-> * Be running Windows 10 build 1803+ ([Check your build #](ms-settings:about))
-> * Have updated graphics drivers (Device Manager > Display adapters > Update driver)
->
-> If your machine doesn't fit this criteria, you may be able to run [Intel HAXM](https://github.com/intel/haxm/wiki/Installation-Instructions-on-Windows) or [AMD Hypervisor](https://github.com/google/android-emulator-hypervisor-driver-for-amd-processors). For more info, see the article: [Hardware acceleration for emulator performance](/xamarin/android/get-started/installation/android-emulator/hardware-acceleration) or the [Android Studio Emulator documentation](https://developer.android.com/studio/run/emulator).
-
-1. Verify that your computer hardware and software is compatible with Hyper-V by opening a command prompt and entering the command: `systeminfo`
-
- 
-
-2. In the Windows search box (lower left), enter "windows features". Select **Turn Windows features on or off** from the search results.
-
-3. Once the **Windows Features** list appears, scroll to find **Hyper-V** (includes both Management Tools and Platform) and **Windows Hypervisor Platform**, ensure that the box is checked to enable both, then select **OK**.
-
-4. Restart your computer when prompted.
-
-### Emulator for native development with Android Studio
-
-When building and testing a native Android app, we recommend [using Android Studio](./native-android.md). Once your app is ready for testing, you can build and run your app by:
-
-1. In the Android Studio toolbar, select your app from the **run configurations** drop-down menu.
-
- 
-
-2. From the **target device** drop-down menu, select the device that you want to run your app on.
-
- 
-
-3. Select Run ▷. This will launch the [Android Emulator](https://developer.android.com/studio/run/emulator).
-
-> [!TIP]
-> Once your app is installed on the emulator device, you can use `Apply Changes` to deploy certain code and resource changes without building a new APK. See the [Android developer guide](https://developer.android.com/studio/run#apply-changes) for more information.
-
-### Emulator for cross-platform development with Visual Studio
-
-There are many [Android emulator options](https://www.androidauthority.com/best-android-emulators-for-pc-655308/) available for Windows PCs. We recommend using the Google [Android emulator](https://developer.android.com/studio/run/emulator), as it offers access to the latest Android OS images and Google Play services.
-
-### Install Android emulator with Visual Studio
-
-1. If you don't already have it installed, download [Visual Studio 2019](https://visualstudio.microsoft.com/downloads/). Use the Visual Studio Installer to [Modify your workloads](/visualstudio/install/modify-visual-studio#modify-workloads) and ensure that you have the **Mobile development with .NET workload**.
-
-2. Create a new project. Once you've [set up the Android Emulator](/xamarin/android/get-started/installation/android-emulator/), you can use the [Android Device Manager](/xamarin/android/get-started/installation/android-emulator/device-manager?pivots=windows&tabs=windows#requirements) to create, duplicate, customize, and launch a variety of Android virtual devices. Launch the Android Device Manager from the Tools menu with: **Tools** > **Android** > **Android Device Manager**.
-
-3. Once the Android Device Manager opens, select **+ New** to create a new device.
-
-4. You will need to give the device a name, choose the base device type from a drop-down menu, choose a processor, and OS version, along with several other variables for the virtual device. For more information, [Android Device Manager Main Screen](/xamarin/android/get-started/installation/android-emulator/device-manager?pivots=windows&tabs=windows#main-screen).
-
-5. In the Visual Studio toolbar, choose between **Debug** (attaches to the application process running inside the emulator after your app starts) or **Release** mode (disables the debugger). Then choose a virtual device from the device drop-down menu and select the **Play** button ▷ to run your application in the emulator.
-
- 
-
-## Additional resources
-
-* [Develop Dual-screen apps for Android and get the Surface Duo device SDK](/dual-screen/android/)
-
-* [Add Windows Defender exclusions to improve performance](defender-settings.md)
diff --git a/hub/android/native-android.md b/hub/android/native-android.md
deleted file mode 100644
index f4d422e8ac..0000000000
--- a/hub/android/native-android.md
+++ /dev/null
@@ -1,134 +0,0 @@
----
-title: Native Android development on Windows
-description: A step-by-step guide on how to get started developing Android native apps on Windows.
-author: mattwojo
-ms.author: mattwoj
-manager: jken
-ms.topic: article
-keywords: android, windows, android studio, visual studio, c++ android game, windows defender, emulator, virtual device, install, java, kotlin
-ms.date: 04/28/2020
----
-
-# Get started with native Android development on Windows
-
-This guide will get you started using Windows to create native Android applications. If you would prefer a cross-platform solution, see [Overview of Android development on Windows](./overview.md) for a brief summary of some options.
-
-The most straight-forward way to create a native Android app is using Android Studio with either [Java or Kotlin](#java-or-kotlin), though it is also possible to [use C or C++ for Android development](#use-c-or-c-for-android-game-development) if you have a specific purpose. The Android Studio SDK tools compile your code, data, and resource files into an archive Android package, .apk file. One APK file contains all the contents of an Android app and is the file that Android-powered devices use to install the app.
-
-## Install Android Studio
-
-Android Studio is the official integrated development environment for Google's Android operating system. [Download the latest version of Android Studio for Windows](https://developer.android.com/studio).
-
-- If you downloaded an .exe file (recommended), double-click to launch it.
-- If you downloaded a .zip file, unpack the ZIP, copy the android-studio folder into your Program Files folder, and then open the android-studio > bin folder and launch studio64.exe (for 64-bit machines) or studio.exe (for 32-bit machines).
-
-Follow the setup wizard in Android Studio and install any SDK packages that it recommends. As new tools and other APIs become available, Android Studio will notify you with a pop-up, or check for updates by selecting **Help** > **Check for Update**.
-
-## Create a new project
-
-Select **File** > **New** > **New Project**.
-
-In the **Choose your project** window, you will be able to choose between these templates:
-
-- **Basic Activity**: Creates a simple app with an app bar, a floating action button and two layout files: one for the activity and one to separate out text content.
-
-- **Empty Activity**: Creates an empty activity and a single layout file with sample text content.
-
-- **Bottom Navigation Activity**: Creates a standard bottom navigation bar for an activity. For more information on this, see the Bottom Navigation Component section of the [Material Design guidelines](https://material.io/guidelines/components/bottom-navigation.html) by Google.
-
-- Templates are commonly used to add activities to new and existing app modules. For example, to create a login screen for your app's users, add an activity with the Login Activity template. To learn more about selecting an activity and how to add code from a template, see [Android Developer guide](https://developer.android.com/studio/projects/templates#SelectTemplate) by Google.
-
-> [!NOTE]
-> The Android operating system is based on the idea of **components** and uses the terms **activity** and **intent** to define interactions. An **activity** represents a single, focused task that a user can do. An **activity** provides a window for building the user interface using classes based on the **View** class. There is a lifecycle for **activities** in the Android operating system, defined by six callbacks: `onCreate()`, `onStart()`, `onResume()`, `onPause()`, `onStop()`, and `onDestroy()`. The activity components interact with one another using **intent** objects. Intent either defines the activity to start or describes the type of action to perform (and the system selects the appropriate activity for you, which can even be from a different application). Learn more about Activities, the Activity Lifecycle, and Intents in the [Android Developer guide](https://developer.android.com/reference/android/app/Activity) by Google.
-
-### Java or Kotlin
-
-**Java** became a language in 1991, developed by what was then Sun Microsystems, but which is now owned by Oracle. It has become one of the most popular and powerful programming languages with one of the largest support communities in the world. Java is class-based and object-oriented, designed to have as few implementation dependencies as possible. The syntax is similar to C and C++, but it has fewer low-level facilities than either of them.
-
-**Kotlin** was first announced as a new open-source language by JetBrains in 2011 and has been included as an alternative to Java in Android Studio since 2017. In May 2019, Google announced Kotlin as it's preferred language for Android app developers, so despite being a newer language, it also has a strong support community and has been identified as one of the fastest growing programming languages. Kotlin is cross-platform, statically typed, and designed to interoperate fully with Java.
-
-Java is more widely used for a broader range of applications and offers some features that Kotlin does not, such as checked exceptions, primitive types that are not classes, static members, non-private fields, wildcard-types, and ternary-operators. Kotlin is specifically designed for and recommended by Android. It also offers some features that Java does not, such as null references controlled by the type system, no raw types, invariant arrays, proper function types (as opposed to Java's SAM-conversions), use-site variance without wildcards, smart casts, and more. Find a more in-depth look at the comparison to Java in the [Kotlin documentation](https://kotlinlang.org/docs/reference/comparison-to-java.html).
-
-### Minimum API Level
-
-You will need to decide the minimum API level for your application. This determines which version of Android your application will support. Lower API levels are older and therefore generally support more devices, but higher API levels are newer and therefor provide more features.
-
-
-
-Select the **Help me choose** link to open a comparison chart showing the device support distribution and key features associated with the platform version release.
-
-
-
-### Instant app support and Androidx artifacts
-
-You may notice a checkbox to **Support instant apps** and another to **Use androidx artifacts** in your project creation options. The *instant apps support* is not checked and the *androidx* is checked as the recommended default.
-
-Google Play **Instant apps** provide a way for people to try an app or game without installing it first. These instant apps can be surfaced across the Play Store, Google Search, social networks, and anywhere you share a link. By checking the **Support instant apps** box, you are asking Android Studio to include the Google Play Instant Development SDK with your project. Learn more about Google Play Instant apps in the [Android developer guide](https://developer.android.com/topic/google-play-instant).
-
-**AndroidX artifacts** represents the new version of the Android support library and provides backwards-compatibility across Android releases. AndroidX provides a consistent namespace starting with the string androidx for all available packages.
-
-> [!NOTE]
-> AndroidX is now the default library. To uncheck this box and use the previous support library requires removing the lastest Android Q SDK. See [Uncheck use Androidx artifacts](https://stackoverflow.com/questions/56580980/uncheck-use-androidx-artifacts) on StackOverflow for instructions, but first note that the former Support Library packages have been mapped into corresponding androidx.* packages. For a full mapping of all the old classes and build artifacts to the new ones, see [Migrating to AndroidX](https://developer.android.com/jetpack/androidx/migrate).
-
-## Project files
-
-The Android Studio **Project** window, contains the following files (be sure that the Android view is selected from the drop-down menu):
-
-**app > java > com.example.myfirstapp > MainActivity**
-
-The main activity and entry point for your app. When you build and run your app, the system launches an instance of this Activity and loads its layout.
-
-**app > res > layout > activity_main.xml**
-
-The XML file defining the layout for the activity's user interface (UI). It contains a TextView element with the text "Hello World"
-
-**app > manifests > AndroidManifest.xml**
-
-The manifest file describing the fundamental characteristics of the app and each of its components.
-
-**Gradle Scripts > build.gradle**
-
-There are two files with this name: "Project: My First App", for the entire project, and "Module: app", for each app module. A new project will initially only have one module. Use the module's build.file to control how the Gradle plugin builds your app. Learn more about how to configure your build in the [Android developer guide](https://developer.android.com/studio/build/index).
-
-## Use C or C++ for Android game development
-
-The Android operating system is designed to support applications written in Java or Kotlin, benefiting from tooling embedded in the system's architecture. Many system features, like Android UI and Intent handling, are only exposed through Java interfaces. There are a few instances where you may want to **use C or C++ code via the Android Native Development Kit (NDK)** despite some of the associated challenges. Game development is an example, since games typically use custom rendering logic written in OpenGL or Vulkan and benefit from a wealth of C libraries focused on game development. Using C or C++ *might* also help you squeeze extra performance out of a device to achieve low latency or run computationally intensive applications, such as physics simulations. The NDK **is not appropriate for most novice Android programmers** however. Unless you have a specific purpose for using the NDK, we recommend sticking with Java, Kotlin, or one of the [cross-platform frameworks](./overview.md).
-
-To create a new project with C/C++ support:
-
-- In the **Choose your project** section of the Android Studio wizard, select the *Native C++** project type. Select **Next**, complete the remaining fields, then select **Next** again.
-
-- In the **Customize C++ Support** section of the wizard, you can customize your project with the **C++ Standard** field. Use the drop-down list to select which standardization of C++ you want to use. Selecting **Toolchain Default** uses the default CMake setting. Select **Finish**.
-
-- Once Android Studio creates your new project, you can find a **cpp** folder in the **Project** pane that contains the native source files, headers, build scripts for CMake or ndk-build, and prebuilt libraries that are a part of your project. You can also find a sample C++ source file, `native-lib.cpp`, in the `src/main/cpp/` folder which provides a simple `stringFromJNI()` function returning the string "Hello from C++". Additionally, you should see a CMake build script, `CMakeLists.txt`, in your module's root directory required for building your native library.
-
-To learn more, about adding C and C++ code to your project, see the [Android developer guide](https://developer.android.com/studio/projects/add-native-code). To find Android NDK samples with C++ integration, see the [Android NDK samples repo](https://github.com/android/ndk-samples) on GitHub. To compile and run a C++ game on Android, use the [Google Play Game services API](https://developers.google.com/games/services/cpp/gettingStartedAndroid).
-
-## Design guidelines
-
-Device users expect applications to look and behave a certain way... whether swiping or tapping or using voice-controls, users will hold specific expectations for what your application should look like and how to use it. These expectations should remain consistent in order to reduce confusion and frustration. Android offers a guide to these platform and device expectations that combines the Google Material Design foundation for visual and navigational patterns, along with quality guidelines for compatibility, performance, and security.
-
-Learn more in the [Android design documentation](https://developer.android.com/design).
-
-### Fluent Design System for Android
-
-Microsoft also offers design guidance with the goal of providing a seamless experience across the entire portfolio of Microsoft's mobile apps.
-
-[Fluent Design System for Android](https://www.microsoft.com/design/fluent/#/android)
-design and build custom apps that are natively Android while still uniquely Fluent.
-
-- [Sketch toolkit](https://aka.ms/fluenttoolkits/android/sketch)
-- [Figma toolkit](https://aka.ms/fluenttoolkits/android/figma)
-- [Android font](https://fonts.google.com/specimen/Roboto)
-- [Android User Interface Guidelines](https://developer.android.com/design/)
-- [Guidelines for Android app icons](https://developer.android.com/guide/practices/ui_guidelines/icon_design)
-
-## Additional resources
-
-- [Android Application Fundamentals](https://developer.android.com/guide/components/fundamentals)
-
-- [Develop Dual-screen apps for Android and get the Surface Duo device SDK](/dual-screen/android/)
-
-- [Add Windows Defender exclusions to improve performance](defender-settings.md)
-
-- [Enable Virtualization support to improve emulator performance](emulator.md#enable-virtualization-support)
\ No newline at end of file
diff --git a/hub/android/overview.md b/hub/android/overview.md
deleted file mode 100644
index b4c12d1564..0000000000
--- a/hub/android/overview.md
+++ /dev/null
@@ -1,88 +0,0 @@
----
-title: Android development on Windows
-description: A guide to help you get started developing for Android on Windows.
-author: mattwojo
-ms.author: mattwoj
-manager: jken
-ms.topic: article
-ms.date: 10/19/2021
----
-
-# Overview of Android development on Windows
-
-A guide to help you set up your development environment on a Windows 10 or Windows 11 machine for developing Android apps. Android is a trademark of Google LLC. If you're a developer interested in using Windows operating system to build apps that work on Android devices and across other device platforms, this guide is for you.
-
-You can also learn about using Windows Subsystem for Android™️ to update and test your Android application so that it will run on a Windows 11 device using the Amazon Appstore. [Learn more](./wsa/index.md).
-
-## Windows as your development environment
-
-There are multiple paths for developing an Android device app using the Windows operating system. These paths fall into three main types: **[Native Android development](#native-android)**, **[Cross-platform development](#cross-platform)**, and **[Android game development](#game-development)**. This overview will help you decide which development path to follow for developing an Android app and then provide [next steps](#next-steps) to help you get started using Windows to develop with:
-
-- [Native Android](native-android.md)
-- [.NET MAUI](/dotnet/maui/what-is-maui)
-- [Xamarin.Android](xamarin-android.md)
-- [React Native](../dev-environment/javascript/react-native-for-android.md)
-- [PWA with Cordova or Ionic](pwa.md)
-- [C/C++ for game development](native-android.md#use-c-or-c-for-android-game-development)
-
-In addition, this guide will provide tips on using Windows to:
-
-- [Test on an Android device or emulator](emulator.md)
-- [Update Windows Defender settings to improve performance](defender-settings.md)
-- [Develop dual-screen apps for Android and get the Surface Duo device SDK](/dual-screen/android/)
-
-### Native Android
-
-[Native Android development on Windows](./native-android.md) means that your app is targeting only Android (not iOS or Windows devices). You can use [Android Studio](https://developer.android.com/studio/install#windows) or [Visual Studio](https://visualstudio.microsoft.com/vs/android/) to develop within the ecosystem designed specifically for the Android operating system. Performance will be optimized for Android devices, the user-interface look and feel will be consistent with other native apps on the device, and any features or capabilities of the user's device will be straight-forward to access and utilize. Developing your app in a native format will help it to just 'feel right' because it follows all of the interaction patterns and user experience standards established specifically for Android devices.
-
-### Cross-platform
-
-Cross-platform frameworks provide a single codebase that can (mostly) be shared between Android, iOS, and Windows devices. Using a cross-platform framework can help your app to maintain the same look, feel, and experience across device platforms, as well as benefiting from the automatic rollout of updates and fixes. Instead of needing to understand a variety of device-specific code languages, the app is developed in a shared codebase, typically in one language.
-
-While cross-platform frameworks aim to look and feel as close to native apps as possible, they will never be as seamlessly integrated as a natively developed app and may suffer from reduced speed and degraded performance. Additionally, the tools used to build cross-platform apps may not have all of the features offered by each different device platform, potentially requiring workarounds.
-
-A codebase is typically made up of **UI code**, for creating the user interface like pages, buttons controls, labels, lists, etc., and **logic code**, for calling web services, accessing a database, invoking hardware capabilities and managing state. On average, 90% of this can be reused, though there is typically some need to customize code for each device platform. This generalization largely depends on the type of app you're building, but provides a bit of context that hopefully will help with your decision-making.
-
-### Choosing a cross-platform framework
-
-[Xamarin Native (Xamarin.Android)](xamarin-android.md)
-
-- UI code: XML with Android Designer, and Material Theme
-- Logic code: C# or F#
-- Still able to tap into some native Android elements, but good for reuse of the code base for other platforms (iOS, Windows).
-- Only logic code is shared across platforms, not UI code.
-- Great for more complex apps with a device-specific user interface.
-
-[React Native](../dev-environment/javascript/react-native-for-android.md)
-
-- UI code: JavaScript
-- Logic code: JavaScript
-- The goal of React Native isn't to write the code once and run it on any platform, rather to learn-once (the React way) and write-anywhere.
-- The community has added tools such as Expo and Create React Native App to help those wanting to build apps without using Xcode or Android Studio.
-- Similar to Xamarin (C#), React Native (JavaScript) calls native UI elements (without the need for writing Java/Kotlin or Swift).
-
-[Progressive Web Apps (PWAs)](pwa.md)
-
-- UI code: HTML, CSS, JavaScript
-- Logic code: JavaScript
-- PWAs are web apps built with standard patterns to allow them to take advantage of both web and native app features. They can be built without a framework, but a couple of popular frameworks to consider are [Ionic](https://ionicframework.com/docs/intro) and [Apache Cordova](https://cordova.apache.org).
-- PWAs can be installed on a device (Android, iOS, or Windows) and can work offline thanks to the incorporation of a service-worker.
-- PWAs can be distributed and installed without an app store using only a web URL. The Microsoft Store and Google Play Store allow PWAs to be listed, the Apple Store currently does not, though they can still be installed on any iOS device running 12.2 or later.
-- To learn more, check out this [introduction to PWAs](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Introduction) on MDN.
-
-### Game development
-
-Game development for Android is often unique from developing a standard Android app since games typically use custom rendering logic, often written in OpenGL or Vulkan. For this reason, and because of the many C libraries available that support game development, it's common for developers to use [C/C++ with Visual Studio](/cpp/cross-platform/), along with the Android [Native Development Kit (NDK)](/cpp/cross-platform/create-an-android-native-activity-app), to create games for Android. [Get started with C/C++ for game development](native-android.md#use-c-or-c-for-android-game-development).
-
-Another common path for developing games for Android is to use a game engine. There are many free and open-source engines available, such as [Unity with Visual Studio](/visualstudio/cross-platform/visual-studio-tools-for-unity), [Unreal Engine](https://docs.unrealengine.com/en-US/Platforms/Mobile/Android/GettingStarted/index.html), [MonoGame with Xamarin](/xamarin/graphics-games/monogame/introduction/), [UrhoSharp with Xamarin](/xamarin/graphics-games/urhosharp/introduction), [SkiaSharp with Xamarin.Forms](/xamarin/xamarin-forms/user-interface/graphics/skiasharp/) CocoonJS, App Game Kit, Fusion, Corona SDK, Cocos 2d, and more.
-
-## Next steps
-
-- [Get started with native Android development on Windows](native-android.md)
-- [Get started with Windows Subsystem for Android](./wsa/index.md)
-- [Get started developing for Android using Xamarin.Android](xamarin-android.md)
-- [Get started developing for Android using React Native](../dev-environment/javascript/react-native-for-android.md)
-- [Get started developing a PWA for Android](pwa.md)
-- [Develop Dual-screen apps for Android and get the Surface Duo device SDK](/dual-screen/android/)
-- [Add Windows Defender exclusions to improve performance](defender-settings.md)
-- [Enable Virtualization support to improve emulator performance](emulator.md#enable-virtualization-support)
diff --git a/hub/android/pwa.md b/hub/android/pwa.md
deleted file mode 100644
index df1cd512b8..0000000000
--- a/hub/android/pwa.md
+++ /dev/null
@@ -1,197 +0,0 @@
----
-title: Create a PWA or Hybrid web app for Android
-description: Get started developing Android apps using the PWA approach on Windows.
-author: mattwojo
-ms.author: mattwoj
-manager: jken
-ms.topic: article
-keywords: android on windows, pwa, android, cordova, ionic, phonegap, hybrid web app
-ms.date: 04/28/2020
----
-
-# Get started developing a PWA or Hybrid web app for Android
-
-This guide will help you to get started creating a hybrid web app or Progressive Web App (PWA) on Windows using a single HTML/CSS/JavaScript codebase that can be used on the web and across device platforms (Android, iOS, Windows).
-
-By using the right frameworks and components, web-based applications can work on an Android device in a way that looks to users very similar to a native app.
-
-## Features of a PWA or Hybrid web app
-
-There are two main types of web apps that can be installed on Android devices. The main difference being whether your application code is embedded in an app package (hybrid) or hosted on a web server (pwa).
-
-- **Hybrid web apps**: Code (HTML, JS, CSS) is packaged in an APK and can be distributed via the Google Play Store. The viewing engine is isolated from the users' internet browser, no session or cache sharing.
-
-- **Progressive Web Apps (PWAs)**: Code (HTML, JS, CSS) lives on the web and doesn't need to be packaged as an APK. Resources are downloaded and updated as needed using a Service Worker. The Chrome browser will render and display your app, but will look native and not include the normal browser address bar, etc. You can share storage, cache, and sessions with the browser. This is basically like installing a shortcut to the Chrome browser in a special mode. PWAs can also be listed in the Google Play Store using Trusted Web Activity.
-
-PWAs and hybrid web apps are very similar to a native Android app in that they:
-
-- Can be installed via the App Store (Google Play Store and/or Microsoft Store)
-- Have access to native device features like camera, GPS, Bluetooth, notifications, and list of contacts
-- Work Offline (no internet connection)
-
-PWAs also have a few unique features:
-
-- Can be installed on the Android home screen directly from the web (without an App Store)
-- Can additionally be installed via the Google Play Store [using a Trusted Web Activity](https://css-tricks.com/how-to-get-a-progressive-web-app-into-the-google-play-store/)
-- Can be discovered via web search or shared via a URL link
-- Rely on a [Service Worker](https://developers.google.com/web/fundamentals/primers/service-workers) to avoid the need to package native code
-
-You don't need a framework to create a Hybrid app or PWA, but there are a few popular frameworks that will be covered in this guide, including PhoneGap (with Cordova) and Ionic (with Cordova or Capacitor using Angular or React).
-
-## Apache Cordova
-
-[Apache Cordova](https://cordova.apache.org/) is an open-source framework that can simplify the communication between your JavaScript code living in a native [WebView](https://developer.android.com/reference/android/webkit/WebView) and the native Android platform by using [plugins](https://cordova.apache.org/plugins/?platforms=cordova-android). These plugins expose JavaScript endpoints that can be called from your code and used to call native Android device APIs. Some example Cordova plugins include access to device services like battery status, file access, vibration / ring tones, etc. These features are not typically available to web apps or browsers.
-
-There are two popular distributions of Cordova:
-
-- PhoneGap: Support has been discontinued by Adobe.
-
-- [Ionic](https://ionicframework.com/)
-
-## Ionic
-
-[Ionic](https://ionicframework.com/) is a framework that adjusts the user interface (UI) of your app to match the design language of each platform (Android, iOS, Windows). Ionic enables you to use either [Angular](https://ionicframework.com/docs/developer-resources/guides/first-app-v4/intro) or [React](https://ionicframework.com/react).
-
-> [!NOTE]
-> There is a new version of Ionic that uses an alternative to Cordova, called [Capacitor](https://capacitor.ionicframework.com/). This alternative uses containers to make your app [more web-friendly](https://ionicframework.com/blog/announcing-capacitor-1-0/).
-
-### Get started with Ionic by installing required tools
-
-To get started building a PWA or hybrid web app with Ionic, you should first install the following tools:
-
-- Node.js for interacting with the Ionic ecosystem. [Download NodeJS for Windows](https://nodejs.org/en/) or follow the [NodeJS installation guide](../dev-environment/javascript/nodejs-on-wsl.md) using Windows Subsystem for Linux (WSL). You may want to consider using [Node Version Manager (nvm)](../dev-environment/javascript/nodejs-on-wsl.md#install-nvm-nodejs-and-npm) if you will be working with multiple projects and version of NodeJS.
-
-- VS Code for writing your code. [Download VS Code for Windows](https://code.visualstudio.com/). You may also want to install the [WSL Remote Extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-wsl) if you prefer to build your app with a Linux command line.
-
-- Windows Terminal for working with your preferred command-line interface (CLI). [Install Windows Terminal from Microsoft Store](https://www.microsoft.com/en-us/p/windows-terminal-preview/9n0dx20hk701?activetab=pivot:overviewtab).
-
-- Git for version control. [Download Git](https://git-scm.com/downloads).
-
-## Create a new project with Ionic Cordova and Angular
-
-Install Ionic and Cordova by entering the following in your command line:
-
-```bash
-npm install -g @ionic/cli cordova
-```
-
-Create an Ionic Angular app using the "Tabs" app template by entering the command:
-
-```bash
-ionic start photo-gallery tabs
-```
-
-Change into the app folder:
-
-```bash
-cd photo-gallery
-```
-
-Run the app in your web browser:
-
-```bash
-ionic serve
-```
-
-For more information, see the [Ionic Cordova Angular docs](https://ionicframework.com/docs/developer-resources/guides/first-app-v4/intro). Visit the [Making your Angular app a PWA](https://ionicframework.com/docs/angular/pwa) section of the Ionic docs to learn how to move your app from being a hybrid to a PWA.
-
-## Create a new project with Ionic Capacitor and Angular
-
-Install Ionic and Cordova-Res by entering the following in your command line:
-
-```bash
-npm install -g @ionic/cli native-run cordova-res
-```
-
-Create an Ionic Angular app using the "Tabs" app template and adding Capacitor by entering the command:
-
-```bash
-ionic start photo-gallery tabs --type=angular --capacitor
-```
-
-Change into the app folder:
-
-```bash
-cd photo-gallery
-```
-
-Add components to make the app a PWA:
-
-```bash
-npm install @ionic/pwa-elements
-```
-
-Import @ionic/pwa-elements by add the following to your `src/main.ts` file:
-
-```typescript
-import { defineCustomElements } from '@ionic/pwa-elements/loader';
-
-// Call the element loader after the platform has been bootstrapped
-defineCustomElements(window);
-```
-
-Run the app in your web browser:
-
-```bash
-ionic serve
-```
-
-For more information, see the [Ionic Capacitor Angular docs](https://ionicframework.com/docs/angular/your-first-app). Visit the [Making your Angular app a PWA](https://ionicframework.com/docs/angular/pwa) section of the Ionic docs to learn how to move your app from being a hybrid to a PWA.
-
-## Create a new project with Ionic and React
-
-Install the Ionic CLI by entering the following in your command line:
-
-```bash
-npm install -g @ionic/cli
-```
-
-Create a new project with React by entering the command:
-
-```bash
-ionic start myApp blank --type=react
-```
-
-Change into the app folder:
-
-```bash
-cd myApp
-```
-
-Run the app in your web browser:
-
-```bash
-ionic serve
-```
-
-For more information, see the [Ionic React docs](https://ionicframework.com/docs/react/quickstart). Visit the [Making your React app a PWA](https://ionicframework.com/docs/react/pwa) section of the Ionic docs to learn how to move your app from being a hybrid to a PWA.
-
-## Test your Ionic app on a device or emulator
-
-To test your Ionic app on an Android device, plug-in your device ([make sure it is first enabled for development](emulator.md#enable-your-device-for-development)), then in your command line enter:
-
-```bash
-ionic cordova run android
-```
-
-To test your Ionic app on an Android device emulator, you must:
-
-1. [Install the required components -- Java Development Kit (JDK), Gradle, and the Android SDK](https://cordova.apache.org/docs/en/latest/guide/platforms/android/#installing-the-requirements).
-
-2. Create an Android Virtual Device (AVD): See the [Android developer guide]](https://developer.android.com/studio/run/managing-avds.html).
-
-3. Enter the command for Ionic to build and deploy your app to the emulator: `ionic cordova emulate [] [options]`. In this case, the command should be:
-
-```bash
-ionic cordova emulate android --list
-```
-
-See the [Cordova Emulator](https://ionicframework.com/docs/cli/commands/cordova-emulate) in the Ionic docs for more info.
-
-## Additional resources
-
-- [Develop Dual-screen apps for Android and get the Surface Duo device SDK](/dual-screen/android/)
-
-- [Add Windows Defender exclusions to improve performance](defender-settings.md)
-
-- [Enable Virtualization support to improve emulator performance](emulator.md#enable-virtualization-support)
diff --git a/hub/android/wsa/index.md b/hub/android/wsa/index.md
deleted file mode 100644
index 6451e20e19..0000000000
--- a/hub/android/wsa/index.md
+++ /dev/null
@@ -1,279 +0,0 @@
----
-title: Windows Subsystem for Android™️
-description: Windows Subsystem for Android™️ enables your Windows 11 device to run Android applications that are available in the Amazon Appstore. Learn more about set up, device requirements, installing and uninstalling, input compatibility, testing and debugging, and using the Amazon Appstore.
-author: mattwojo
-ms.author: mattwoj
-ms.reviewer: mousma
-manager: jken
-ms.topic: article
-ms.date: 06/06/2023
----
-
-# Windows Subsystem for Android™️
-
-Windows Subsystem for Android™️ enables your Windows 11 device to run Android applications that are available in the Amazon Appstore. Android is a trademark of Google LLC. If you're a developer interested in targeting Windows desktop devices and optimizing for the Windows operating system, this guide is for you.
-
-To make your Android app available on Windows 11 devices, you must:
-
-- [Submit your app to the Amazon Appstore](https://developer.amazon.com/apps-and-games/appstore-on-windows-11).
-
-For more information or support:
-
-- [Sign up for updates to the Amazon Appstore on Windows program](https://m.amazonappservices.com/developer-interest).
-- [Visit the Amazon developer support portal](https://developer.amazon.com/apps-and-games/appstore-on-windows-11) where you can find articles, forums, FAQs, or reach out for direct support via the Appstore "Contact us" page once you set up an Amazon Developer account.
-
-This guide can help you test and debug your Android app on Windows:
-
-- [Set up your development environment](#set-up-your-development-environment), including [prerequisites](#prerequisites), [installing the Amazon Appstore](#install-the-amazon-appstore), and using the [Settings](#windows-subsystem-for-android-settings).
-- [Test and debug](#test-and-debug) your app on a Windows 11 device.
-- Handle input compatibility considerations for Windows devices, such as: [keyboard input](#keyboard-input), [mouse input](#mouse-input), and [window management and resizing](#window-management-and-resizing).
-- [Troubleshoot and find answers](#troubleshooting-issues).
-
-## Developer GitHub
-
-Want to learn more about Windows Subsystem for Android™️ roadmap, discuss developer issues and file bugs or feature requests with the subsystem team? Visit the [Windows Subsystem for Android™️ Developers GitHub](https://github.com/microsoft/WSA).
-
-## Preview Program
-
-The Windows Subsystem for Android™️ Preview Program allows users to receive early-preview builds of the Windows Subsystem for Android™ and Amazon Appstore on Windows. For more details, visit the [Preview Program page](./preview-program.md).
-
-## Set up your development environment
-
-To test your Android app in the Windows desktop environment, a bit of set up will be required.
-
-### Prerequisites
-
-Windows Subsystem for Android™️ is available on Windows 11. Your device must meet specific requirements: [Device requirements](https://support.microsoft.com/windows/f8d0abb5-44ad-47d8-b9fb-ad6b1459ff6c).
-
-### Install the Amazon Appstore
-
-The Microsoft Store will automatically install Windows Subsystem for Android™️ silently in the background when either of the two following user actions are taken:
-
-1. Install the [Amazon Appstore from the Microsoft Store](https://www.microsoft.com/store/productId/9NJHK44TTKSX). Selecting **Get** will begin the installation of the app.
-2. Install an Android app from the Microsoft Store for the first time, which will also install the Amazon Appstore.
-
-The **Amazon Appstore** app will then appear in the Windows 11 Start menu and be available on search, offering a catalogue of Android apps. The **Windows Subsystem for Android™️** app, which lets you control mobile app settings and features, will also appear in the Start menu.
-
-
-
-> [!NOTE]
-> The Amazon Appstore on Windows (a requirement for running Android apps on Windows 11) is available in [select regions](https://support.microsoft.com/windows/countries-and-regions-that-support-amazon-appstore-on-windows-d8dd17c7-5994-4187-9527-ddb076f9493e?preview=true).
-
-## Windows Subsystem for Android™️ Settings
-
-To modify Windows Subsystem for Android™️ settings, go to: **Start > All Apps > Windows Subsystem for Android™️**. Learn more about specific settings app features: [Manage settings for mobile apps on Windows](https://support.microsoft.com/windows/000f97e8-8c20-490e-9ef4-cd90d903f847).
-
-
-
-## Test and debug
-
-To test and debug your app on a Windows 11 device using the Windows Subsystem for Android™️ the following set up steps are required.
-
-### Enable developer mode in Windows Settings
-
-You must first enable developer mode. Open the **[Windows Subsystem for Android™️](#windows-subsystem-for-android-settings)** settings. Once open, enable **Developer mode** under **Advanced settings**.
-
-### Connect to the Windows Subsystem for Android™️ for debugging
-
-To connect to the Windows Subsystem for Android™️ VM for debugging:
-
-1. Launch an Android app that was installed using the Amazon Appstore.
-
-2. You can connect using adb connect with the following command (you must have [adb installed](https://developer.android.com/studio/command-line/adb)):
-
- ```powershell
- adb connect 127.0.0.1:58526
- ```
-
-### Connect to a test device
-
-To connect to a test device (with Windows Subsystem for Android™️ installed) on the same network from Windows/Mac:
-
-1. On the test device (where Windows Subsystem for Android™️ is installed) open a PowerShell window and identify the IP address of the test device by running the command:
-
- ```powershell
- ipconfig
- ```
-
-2. Using the debugging device terminal where Android Studio and the Android SDK is installed (Mac/Windows), enter the command:
-
- ```console
- adb connect :58526
- ```
-
-The `` can be found in the output of "ipconfig" from the test device. You can also deploy and debug apps from Android Studio.
-
-To use Android Debug Bridge (ADB) to connect your development workstation directly to your Android device so you can install packages and evaluate changes, see [Android Debug Bridge in the Android Open Source Project docs](https://source.android.com/setup/build/adb).
-
-### Debug your app
-
-While apps should be installed using the Amazon Appstore, debugging an Android app on a Windows device is possible using an APK (Android application package) and adb (Android Debug Bridge).
-
-To debug an APK using adb:
-
-1. Follow the steps to connect to the Windows Subsystem for Android™️ VM above.
-
-2. Install the APK using the adb install command: `adb install app-debug.apk`
-
- Expected Output:
-
- ```powershell
- Performing Streamed Install
- Success
- ```
-
-3. A successful “app installed” notification will appear in the Windows notification menu and the app will launch once selected.
-
-### Building Universal APKs
-
-Windows Subsystem for Android™️ utilizes Intel Bridge Technology to enable Arm applications on x86 based processors. Arm applications will run on Arm-based processors natively. The emulation layer will induce a performance overhead – for optimal performance, submit your application for both the x86-64 and Arm64 architectures.
-
-## Input compatibility considerations for Windows devices
-
-There are a few unique input behaviors to consider that will likely require updates to your Android app code, designed for handheld devices, to be compatible when running on a Windows desktop device via the Amazon Appstore.
-
-### Keyboard input
-
-For text input fields handled by an on-screen virtual keyboard input method (or IME), such as `EditText`, apps should behave as expected. ([EditText class in the Android docs](https://developer.android.com/reference/android/widget/EditText)).
-
-For keystrokes that cannot be anticipated by the framework, apps will need to handle the behavior themselves. If this is already implemented in-app, no extra work is required.
-
-As an example, some games may already support movement facilitated via keyboard, through `w` `a` `s` `d` keys, alongside touch input.
-
-The following are keyboard inputs that developers should consider code updates for when building for Windows 11 devices:
-
-- Enter Key
-- Arrow-key and Tab-key Navigation
-- Change Selected Item Highlight Color
-- Ctrl-based Shortcuts
-
-Learn more about how to optimize for these keyboard input scenarios on desktop devices by following the Android documentation:
-
-- [Input compatibility guide in the Android docs](https://developer.android.com/topic/arc/input-compatibility)
-- [Handle keyboard input guide in the Android docs](https://developer.android.com/training/keyboard-input)
-- [Use touch gestures guide in the Android docs](https://developer.android.com/training/gestures)
-
-### Mouse input
-
-Developers should consider updating code for the following mouse inputs when building for Windows devices:
-
-- Right Click
-- Tooltips / Hover Text
-- Hover Effects
-- Mouse Scroll Wheel Action
-- Drag and Drop
-
-Mouse input, similar to keyboard input, must follow the official Android app guidelines. This means using the `InputDevice` class paired with the `SOURCE_MOUSE` constant. Learn more about how to optimize for these mouse input scenarios on desktop devices by following the Android documentation:
-
-- [Input compatibility guide in the Android docs](https://developer.android.com/topic/arc/input-compatibility)
-- [InputDevice reference in the Android docs](https://developer.android.com/reference/android/view/InputDevice)
-- [SOURCE_MOUSE reference in the Android docs](https://developer.android.com/reference/android/view/InputDevice#SOURCE_MOUSE)
-
-## Window management and resizing
-
-Unlike traditional mobile form factors, Android apps running on Windows 11 can be freely resized, should be responsive in their resizing, and can be snapped using Windows actions/gestures.
-
-### Minimum screen requirement
-
-Windows 11 enforces a minimum screen requirement of 720p resolution (1280x720) with a >9” screen.
-
-### Letter & pillar boxing
-
-When the aspect ratio of a window size does not align between the device screen sizes that window is being displayed on, the result may be Letterboxing (the window is wider than it is high, or horizontally longer) or Pillarboxing (the window is more narrow than it is wide, or vertically longer). The result is bars being placed on the sides of the window in order to center it. These bars may be light- or dark-themed depending on the system settings selected. This will only occur as necessary when the Android app is snapped or maximized, allowing Android apps to take advantage of the rich snapping features in Windows and integrate into the windowing model.
-
-
-
-### Additional resizing considerations
-
-The following should also be considered when updating an Android app to run on a Windows 11 device with respect to window management and resizing:
-
-- Initial launch size
-- Window dimensions
- - Content bounds
- - Free form resizing
-- Screen Orientation
-
-Learn more about how to optimize for window resizing scenarios on desktop devices by following the [Window Management guide in the Android docs](https://developer.android.com/topic/arc/window-management).
-
-## Application Lifecycle Events
-
-Developing Android applications for a multi-window environment has an impact on the lifecycle events that you choose to utilize in your application. While overriding the `onPause` event may achieve the results you’d like on a phone or tablet, it’s typically the wrong event to use if you’re changing your app’s UX.
-
-See the [Android documentation](https://developer.android.com/guide/components/activities/activity-lifecycle) for a description of the lifecycle events. More often than not, you’ll want to use the `onStop` event and not the `onPause` or `onUserLeaveHint` events. In fact, many multi-window Android implementations do not deliver the `onUserLeaveHint` notification, and thus any business critical logic that might be in that event handler will not be called on these platforms, including Windows Subsystem for Android™️.
-
-## VM lifecycle considerations
-
-Windows Subsystem for Android™️ utilizes a virtual machine (VM) which provides compatibility with the [AOSP framework](https://source.android.com/) and devices like keyboards, mice, touch, pen, etc.
-
-There are three possible states for the VM running apps with Windows Subsystem for Android™️:
-
-1. Running
-2. Lightweight Doze: Activated after no app activity for 3 minutes. Deactivated by user activity or an app notification.
-3. Not Running: Activated after no app activity for 7 minutes.
-
-Transitions between these states are triggered by user activity, such as launching or interaction with the Android app or an app notification. Android apps are paused and then stopped when their window is minimized.
-
-
-
-### VM Properties
-
-The properties for the Windows Subsystem for Android™️ VM are listed below. Hardcoding these values is not recommended as that could cause future incompatibilities.
-
-| Property | Value |
-| --- | --- |
-| Build.MANUFACTURER | Microsoft Corporation |
-| Build.MODEL | Subsystem for Android(TM) |
-| Build.VERSION.SDK_INT | 32 |
-| Build.BOARD | windows |
-
-## Redirect to Windows apps
-
-Windows Subsystem for Android™️ automatically redirects intents for files and common URI schemes to the corresponding Windows default file/protocol handler (if multiple intent filters match, users see a "Windows default app" option in the chooser dialog). Supported file intents include [ACTION_VIEW](https://developer.android.com/reference/android/content/Intent#ACTION_VIEW), [ACTION_EDIT](https://developer.android.com/reference/android/content/Intent#ACTION_EDIT), [ACTION_SEND](https://developer.android.com/reference/android/content/Intent#ACTION_SEND), and [ACTION_SEND_MULTIPLE](https://developer.android.com/reference/android/content/Intent#ACTION_SEND_MULTIPLE), which copy the file to the Windows Downloads folder before opening it. Supported URI intents include [ACTION_VIEW](https://developer.android.com/reference/android/content/Intent#ACTION_VIEW) for the http/https schemes and [ACTION_VIEW](https://developer.android.com/reference/android/content/Intent#ACTION_VIEW) and [ACTION_SENDTO](https://developer.android.com/reference/android/content/Intent#ACTION_SENDTO) for the mailto scheme.
-
-Android apps can also manually redirect to Windows apps using custom URI schemes. Set the intent action to `com.microsoft.windows.LAUNCH_URI` and add a string extra to the intent named `com.microsoft.windows.EXTRA_URI` with the custom URI as the value. For example, to launch the Windows Calculator app from an Android app (Java):
-
-```java
-Intent intent = new Intent("com.microsoft.windows.LAUNCH_URI");
-intent.putExtra("com.microsoft.windows.EXTRA_URI", "ms-calculator:");
-
-try {
- startActivity(intent);
-} catch (ActivityNotFoundException e) {
- // Not running in Windows Subsystem for Android™️ (or running on an older build that did not contain this feature).
-}
-```
-
-## Security
-
-Both Windows kernel-mode drivers and Windows applications running at medium integrity level (IL) can inspect arbitrary Android containers and Android app memory. There are no plans to add detection for cheats/macro/bot/suspicious behaviors detection in the short-term.
-
-Developers querying `getSecurityLevel` will get `SECURITY_LEVEL_SW_SECURE_CRYPTO`. Learn more about `getSecurityLevel` in the [Android API Reference guide](https://developer.android.com/reference/android/media/MediaDrm#getSecurityLevel(byte[])).
-
-## Uninstalling Windows Subsystem for Android™️
-
-You can uninstall the Windows Subsystem for Android™️, but note that all associated apps will also be uninstalled.
-
-- Uninstalling the Amazon Appstore will uninstall the Windows Subsystem for Android™️ and all other Android apps.
-- Uninstalling an Amazon Appstore app will only uninstall the app (same behavior as Windows apps).
-- Uninstalling the Windows Subsystem for Android™️ will uninstall the Amazon Appstore and all Android apps.
-
-## Troubleshooting issues
-
-If you encounter issues specific to the Amazon Appstore on Windows, try the following troubleshooting steps:
-
-1. Select **Windows search** from the Windows task bar.
-2. Search for “Amazon Appstore” and right-click on the Amazon Appstore icon.
-3. Select “App Settings” in the dropdown options.
-4. Select “Storage and Cache” and click both “Clear Storage” and “Clear cache”.
-5. Go back and select “Force Stop”.
-6. Close the Amazon Appstore Settings window.
-7. Relaunch the Amazon Appstore.
-
-For further troubleshooting steps relating to the Windows Subsystem for Android™️ Settings app or to leave feedback using Feedback Hub, see [Troubleshooting and FAQ for mobile apps on Windows](https://support.microsoft.com/windows/d6062afd-98a1-4018-a7c8-6b3b680a2ea5).
-
-For any other developer questions and support, use the [Windows Subsystem for Android™️ tag on Microsoft Q&A](/answers/topics/windows-subsystem-for-android.html).
-
-## Additional resources
-
-- [Apps from the Amazon Appstore](https://support.microsoft.com/en-us/windows/apps-from-the-amazon-appstore-abed2335-81bf-490a-92e5-fe01b66e5c48)
-- [Accessibility on Windows Subsystem for Android™️](https://support.microsoft.com/windows/97b77924-6df9-4597-8394-15b6e34d1658)
diff --git a/hub/android/wsa/preview-program.md b/hub/android/wsa/preview-program.md
deleted file mode 100644
index 1b2ada5cb4..0000000000
--- a/hub/android/wsa/preview-program.md
+++ /dev/null
@@ -1,53 +0,0 @@
----
-title: Windows Subsystem for Android™️ Preview Program
-description: Preview Program for Windows Subsystem for Android.
-author: hamza-usmani
-ms.author: mousma
-ms.reviewer: mattwojo
-manager: aleader
-ms.topic: article
-ms.date: 03/07/2022
----
-
-# Windows Subsystem for Android™️ Preview Program
-
-The Windows Subsystem for Android™️ Preview Program allows users to receive early-preview builds of the Windows Subsystem for Android™ and Amazon Appstore on Windows. Installing the Amazon Appstore on Windows automatically installs Windows Subsystem for Android™️. Learn more about [installing the Amazon Appstore](https://support.microsoft.com/en-us/windows/install-mobile-apps-and-the-amazon-appstore-f8d0abb5-44ad-47d8-b9fb-ad6b1459ff6c).
-
-> [!NOTE]
-> This program is separate from the Windows Insider Program and *only* enrolls your account into receiving preview builds of Windows Subsystem for Android™️.
-
-Preview builds may not always be stable and users may encounter issues that block apps or require workarounds. Visit [Troubleshooting and FAQ for mobile apps on Windows](https://support.microsoft.com/windows/troubleshooting-and-faq-for-mobile-apps-on-windows-d6062afd-98a1-4018-a7c8-6b3b680a2ea5) to find help and information on how to leave feedback using Windows Feedback Hub. Your feedback will be useful in improving the quality of Windows Subsystem for Android™️.
-
-Please note that the Windows Subsystem for Android™ may be substantially modified before it’s public release. Microsoft makes no warranties, express or implied, with respect to the information provided here. Microsoft respects your privacy:
-- [Microsoft Privacy Statement](https://privacy.microsoft.com/privacystatement)
-- [Microsoft Global Data Privacy Notice](https://privacy.microsoft.com/data-privacy-notice).
-
-
-## Prerequisites
-
-Windows Subsystem for Android™️ is available on Windows 11.
-
-- Your device must meet specific requirements. [Install mobile apps and the Amazon Appstore: Device requirements](https://support.microsoft.com/windows/install-mobile-apps-and-the-amazon-appstore-f8d0abb5-44ad-47d8-b9fb-ad6b1459ff6c).
-- You must have the [Amazon Appstore installed](https://support.microsoft.com/windows/install-mobile-apps-and-the-amazon-appstore-f8d0abb5-44ad-47d8-b9fb-ad6b1459ff6c) on your Windows 11 device to participate in the preview. An Amazon account is also required to download mobile apps from the Amazon Appstore.
-- Windows Subsystem for Android™️ is currently available in [select countries and regions](https://support.microsoft.com/windows/countries-and-regions-that-support-amazon-appstore-on-windows-d8dd17c7-5994-4187-9527-ddb076f9493e).
-
-## Sign Up
-
-You will need a Microsoft Account (MSA) email address that you use to sign in to the Microsoft Store. If you do not yet have a Microsoft Account, [create an account here](https://account.microsoft.com/account).
-
-> [!div class="nextstepaction"]
-> [Sign Up for Preview Program](https://aka.ms/WSAPreviewProgram)
-
-Once you submit your MSA email, you will see a confirmation that you have joined the program and receive a confirmation email. You will be added to a special app flight ring to receive Windows Subsystem for Android™️ preview updates. These updates will be pushed to the Amazon Appstore that you previously installed via the Microsoft Store (see prerequisites). This may take up to 7 days before you begin receiving updates.
-
-## Opt Out
-
-If you have previously joined the program and would like to stop receiving preview builds, you can opt out using the form linked below. After opting out of the program, you will receive a confirmation email. It may take up to 7 days before you are no longer in the preview program and return to receiving the general public builds. Opting out of this program will *not* opt your account out of the Windows Insider Program.
-
-> [!div class="nextstepaction"]
-> [Opt out of the Preview Program](https://aka.ms/WSAPreviewProgramOptOut)
-
-## Share your feedback
-
-If you run into an issue while using Windows Subsystem for Android™️ or your Amazon Appstore installation, select **Windows key + F** to launch **Feedback Hub** and Use the category **Apps** > **Windows Subsystem for Android™️**. Provide as many details as possible regarding the issue to help us diagnose and resolve the problem.
-For more details: [Troubleshooting and FAQ](https://support.microsoft.com/windows/troubleshooting-and-faq-for-mobile-apps-on-windows-d6062afd-98a1-4018-a7c8-6b3b680a2ea5).
diff --git a/hub/android/wsa/release-notes.md b/hub/android/wsa/release-notes.md
deleted file mode 100644
index e211cbcc77..0000000000
--- a/hub/android/wsa/release-notes.md
+++ /dev/null
@@ -1,240 +0,0 @@
----
-title: Windows Subsystem for Android™️ Release Notes
-description: Release notes for Windows Subsystem for Android.
-author: mattwojo
-ms.author: mattwoj
-ms.reviewer: mousma
-manager: jken
-ms.topic: article
-ms.date: 03/15/2023
----
-
-# Release Notes for Windows Subsystem for Android™️
-
-These release notes are based on updates to the Windows Subsystem for Android™️. For basic information on how to install and run Android™️ apps on Windows, see the Support article: [Installing the Amazon Appstore and Android™️ Apps](https://support.microsoft.com/windows/mobile-apps-and-the-windows-subsystem-for-android-f8d0abb5-44ad-47d8-b9fb-ad6b1459ff6c).
-
-## Build 2304.40000.3.0
-
-June 1, 2023
-- Package verification for apps on WSA: Android apps are scanned using anti-virus software installed on Windows prior to app installation.
-- Ability for users to configure how much memory to assign to Android
-- Android apps will be launched when a user opens the supported app link from any app (Android AppLink support)
-- Linux kernel updated to 5.15.94
-- Improvements to platform reliability and performance
-
-## Build 2303.40000.3.0
-
-April 11, 2023
-
-- Picture-in-picture mode now supported
-- A new "Partially running" system setting added to WSA Settings app, which runs the subsystem with minimal resources but apps launch quicker than "As needed" mode
-- Linux kernel updated to 5.15.78
-- Improvements to platform reliability
-- Android 13 security updates
-
-## Build 2302.4000
-
-March 15, 2023
-
-- Stability improvements to graphics card selection
-- Updates to the Windows Subsystem for Android Settings app to include performance options for graphics cards
-- Docking and undocking with external monitors issues fixed with the subsystem
-- Fixes to apps with audio buffer issues
-- Android 13 security updates
-
-## Build 2301.40000.4.0
-
-February 9, 2023
-
-- Improved audio input latency and reliability
-- Improvements to camera experience (camera metadata now exposed to camera apps)
-- Improvements to framerate performance: certain benchmarks have improved by 10%-20% on ARM and 40%-50% on x64
-- Fixed zooming out in apps using touchpad or mouse
-- Improvements to platform reliability
-- Using latest Chromium WebView to version 108
-- Synchronizing global microphone and camera privacy toggles between Windows and Android apps
-- Android 13 security updates
-
-## Build 2211.40000.11.0
-
-January 10, 2023
-
-- Windows Subsystem for Android updated to Android 13
-- Improvements in boot performance
-- Improvements to mouse click input
-- Improvements in clipboard stability
-- Improvements to application resizing
-- Reliability improvements to media files opening in Windows
-- Jumplist entries for applications supporting app shortcuts
-
-## Build 2210.40000.7.0
-
-November 17, 2022
-
-- Enhancement of audio recording quality
-- Enhancement of OAuth scenarios
-- Support for MPEG2 decoding
-- Improvements to the camera experience when the device is not equipped with a camera
-- Improvements in input reliability
-- Chromium update to 106
-
-## Build 2209.40000.26.0
-
-October 20, 2022
-
-- Improvements to the Camera HAL
-- Improvements to clipboard stability
-- Improvements to multi-threaded (>8 core) performance
-- Improved security for graphic streaming
-- Reliability improvements for package launches
-- Security updates for ANGLE and GSK
-- Annotated telemetry with package installation sources
-- Window with legal information has been fixed
-- Security updates to the Linux kernel
-- Enhancements to platform stability
-- Updated to Chromium WebView 105
-
-## Build 2208.40000.4.0
-
-September 15, 2022
-
-- Reliability fixes for App Not Responding (ANR) errors
-- Improvements to input compatibility shims
-- Improvements to scrolling (smoothness) in apps
-- Usability Improvements to the Windows Subsystem for Android Settings app
-- Startup performance improvements
-- Fixed crashes when copying and pasting extremely large content
-- UX improvements for the game controls dialog
-- Improvements to networking
-- General graphics improvements
-- Improvements for gamepad when using multiple apps
-- Improved performance of uninstalling apps
-- Fixed video playback issue for apps
-- Updated to Chromium WebView 104
-- Linux kernel security updates
-
-## Build 2207.40000.8.0
-
-August 31, 2022
-
-- New compatibility shim to allow apps to maintain aspect ratio but still support resize
-- Accessibility improvements to the Windows Subsystem for Android Settings app
-- New compatibility shims in the Windows Subsystem for Android Settings app
-- Fixed problems with restarting apps
-- Apps that update toast notifications instead of using progress toasts have better behavior
-- Game controls user education dialog for apps with compatibility shims enabled
-- Improvements with handling VPN
-- Scrollbar fix for Windows Subsystem for Android Settings compatibility page
-- User crash data and system app crash data is now being reported
-- “No internet available” toast notification is now suppressed
-- Custom Android toasts now render correctly
-- Amazon Appstore 60.09 update
-- Android security update
-- Improved reliability
-
-## Build 2206.40000.15.0
-
-August 2, 2022
-
-- New suite of shims available to toggle in the Windows Subsystem for Android Settings app which enables better experiences in several apps
-- Compatibility for games with joysticks (mapped to WASD)
-- Compatibility for gamepad in games
-- Compatibility for aiming in games with arrow keys
-- Compatibility for sliding in games with arrow keys
-- Scrolling improvements
-- Networking improvements
-- Android minimum window size defaulted to 220dp
-- Improved dialog when unsupported VPN is detected
-- New toggle to view/save diagnostic data in the Windows Subsystem for Android Settings app
-- Security updates
-- General reliability fixes, including improvements to diagnostic sizes
-- Graphics improvements
-
-## Build 2205.40000.14.0
-
-July 6, 2022
-
-- Enabled Advanced Networking functionality, including app access to local network devices for ARM
-- VM IP address removed from Settings app. With Advanced Networking, now the IP address of the VM is the same as the host/computer IP
-- Fixes for non-resizable app content on maximize or resizing
-- Fixes for scrolling with mouse and trackpad in apps
-- Android May Kernel patches
-- Android windows marked secure can no longer be screenshotted
-- Improve web browser launching
-- Enable doze and app standby while charging for improved power saving
-- ADB debug prompts redirected to Windows for improved security
-- Updated to Chromium WebView 101
-- Fixes for graphics including app flickering and graphics corruption
-- Fixes for video playback
-- AV1 Codec support
-- Enabled IPv6 and VPN Connectivity
-- Increased the performance and reliability connecting to virtual WIFI in the container
-- Video playback apps can now prevent the screen from turning off in Windows
-
-Known Issues:
-- Some VPNs may not work with Advanced Networking. If you use a VPN and find Android apps do not have network connectivity, please disable Advanced Networking in the Windows Subsystem for Android Settings app
-
-## Build 2204.40000.19.0
-
-May 20, 2022
-
-- Windows Subsystem for Android updated to Android 12.1
-- Advanced networking on by default for newer x64 Windows builds
-- Updated Windows Subsystem for Android Settings app: redesigned UX and diagnostics data viewer added
-- Simpleperf CPU profiler recording now works with Windows Subsystem for Android
-- Windows taskbar now shows which Android apps are using microphone and location
-- Improvements to Android app notifications appearing as Windows notifications
-- Reduced flicker when apps are restored from minimized state
-- Apps are not restarted when devices come out of connected standby on recent Windows builds
-- New video hardware decoding (VP8 and VP9)
-- Fixes for on-screen keyboard in apps
-- Fixes for full screen Android apps and auto-hidden Windows taskbar
-- Windows Subsystem for Android updated with Chromium WebView 100
-- Added support for Android NetworkLocationProvider in addition to GpsLocationProvider
-- Improved general stability, performance, and reliability
-
-Known Issues:
-
-- Instability with camera on ARM devices
-- Instability printing via Android apps
-- Some apps rendered at lower resolutions may lay out incorrectly
-- Some VPNs may not work with Advanced Networking. If you use a VPN and find Android apps do not have network connectivity, please disable Advanced Networking in the Windows Subsystem for Android Settings app
-- Some apps that were previously available might be missing from the experience, fail to launch, or function incorrectly for various known issues. We’re working with our partners to address these issues as soon as possible.
-
-
-## Build 2203.40000.3.0
-
-March 22, 2022.
-
-- H.264 Video Hardware Decoding
-- Networking changes enabling future improvements in the platform
-- Mail Integration with Windows email clients and Android apps
-- Disabled force-enabling MSAA (Multisample anti-aliasing)
-- Improved scrolling in the Amazon Appstore and Kindle apps
-
-Known Issues:
-
-- Video playback in some apps may be choppy on certain systems.
-- Coming out of connected standby, apps may be restarted.
-
-
-## Public Preview Build 1.8.32837.0
-
-February 15, 2022. Windows Subsystem for Android is available for **public preview**.
-
-- General improvements to performance and reliability
-- Full screen support for apps (via F11)
-- Taking pictures with camera metadata and encoding fixed
-- Improvements to the OAuth experience
-- Improved screen reader support for the Amazon Appstore
-- Fix for issue with file attachments not displaying an email dialog correctly
-- When Windows Subsystem for Android™️ Settings subsystem resources are configured for continuous mode, the subsystem will restart at Windows boot up
-- Windows Subsystem for Android™️ Settings App now includes the ability to choose GPU
-- Copy and paste clipboard reliability improvements
-- Fixes to camera rotation and aspect ratio
-- Fixes for onscreen keyboard in apps
-
-Known Issues:
-
-- Apps coming out of modern standby may encounter issues
-- Performance may vary when running multiple concurrent apps
diff --git a/hub/android/xamarin-android.md b/hub/android/xamarin-android.md
deleted file mode 100644
index 0b8053f3ed..0000000000
--- a/hub/android/xamarin-android.md
+++ /dev/null
@@ -1,221 +0,0 @@
----
-title: Create Android app with Xamarin.Android
-description: How to get started writing Android apps with Xamarin.Android
-author: hickeys
-ms.author: hickeys
-manager: jken
-ms.topic: article
-keywords: android, windows, xamarin.android, tutorial, xml, axml
-ms.date: 04/28/2020
----
-
-# Get started developing for Android using Xamarin.Android
-
-This guide will help you to get started using Xamarin.Android on Windows to create a cross-platform app that will work on Android devices.
-
-In this article, you will create a simple Android app using Xamarin.Android and Visual Studio 2019.
-
-## Requirements
-
-To use this tutorial, you'll need the following:
-
-- Windows 11 or Windows 10
-- [Visual Studio 2019: Community, Professional, or Enterprise](https://visualstudio.microsoft.com/downloads/) (see note)
-- The "Mobile development with .NET" workload for Visual Studio 2019
-
-> [!NOTE]
-> This guide works with Visual Studio 2022, Visual Studio 2019, and Visual Studio 2017. If you're using Visual Studio 2017, some instructions might be incorrect due to UI differences between versions of Visual Studio.
-
-You will also need to have an Android phone or configured emulator in which to run your app. See [Configuring an Android emulator](emulator.md).
-
-## Create a new Xamarin.Android project
-
-Start Visual Studio. Select File > New > Project to create a new project.
-
-In the new project dialog, select the **Android App (Xamarin)** template and click **Next**.
-
-Name the project **TimeChangerAndroid** and click **Create**.
-
-In the New Cross Platform App dialog, select **Blank App**. In the **Minimum Android Version**, select **Android 5.0 (Lollipop)**. Click **OK**.
-
-Xamarin will create a new solution with a single project named **TimeChangerAndroid**.
-
-## Create a UI with Android XML
-
-In the **Resources\layout** directory of your project, open **activity_main.xml**. The XML in this file defines the first screen a user will see when opening TimeChanger.
-
-TimeChanger's UI is simple. It displays the current time and has buttons to adjust the time in increments of one hour. It uses a vertical `LinearLayout` to align the time above the buttons and a horizontal `LinearLayout` to arrange the buttons side-by-side. The content is centered in the screen by setting **android:gravity** attribute to **center** in the vertical `LinearLayout`.
-
-Replace the contents of **activity_main.xml** with the following code.
-
-```xml
-
-
-
-
-
-
-
-```
-
-At this point you can run **TimeChangerAndroid** and see the UI you've created. In the next section, you will add functionality to your UI displaying the current time and enabling the buttons to perform an action.
-
-## Add logic code with C#
-
-Open **MainActivity.cs**. This file contains the code-behind logic that will add functionality to the UI.
-
-### Set the current time
-
-First, get a reference to the `TextView` that will display the time. Use **FindViewById** to search all UI elements for the one with the correct **android:id** (which was set to `"@+id/timeDisplay"` in the xml from the previous step). This is the `TextView` that will display the current time.
-
-```csharp
-var timeDisplay = FindViewById(Resource.Id.timeDisplay);
-```
-
-UI controls must be updated on the UI thread. Changes made from another thread may not properly update the control as it displays on the screen. Because there is no guarantee this code will always be running on the UI thread, use the **RunOnUiThread** method to make sure any updates display correctly. Here is the complete `UpdateTimeLabel` method.
-
-```csharp
-private void UpdateTimeLabel(object state = null)
-{
- RunOnUiThread(() =>
- {
- TimeDisplay.Text = DateTime.Now.ToLongTimeString();
- });
-}
-```
-
-### Update the current time once every second
-
-At this point, the current time will be accurate for, at most, one second after TimeChangerAndroid is launched. The label must be periodically updated to keep the time accurate. A **Timer** object will periodically call a callback method that updates the label with the current time.
-
-```csharp
-var clockRefresh = new Timer(dueTime: 0, period: 1000, callback: UpdateTimeLabel, state: null);
-```
-
-### Add HourOffset
-
-The up and down buttons adjust the time in increments of one hour. Add an **HourOffset** property to track the current adjustment.
-
-```csharp
-public int HourOffset { get; private set; }
-```
-
-Now update the UpdateTimeLabel method to be aware of the HourOffset property.
-
-```csharp
-TimeDisplay.Text = DateTime.Now.AddHours(HourOffset).ToLongTimeString();
-```
-
-### Create the button Click event handlers
-
-All the up and down buttons need to do is increment or decrement the HourOffset property and call UpdateTimeLabel.
-
-```csharp
-public void UpButton_Click(object sender, System.EventArgs e)
-{
- HourOffset++;
- UpdateTimeLabel();
-}
-```
-
-### Wire up the up and down buttons to their corresponding event handlers
-
-To associate the buttons with their corresponding event handlers, first use FindViewById to find the buttons by their ids. Once you have a reference to the button object, you can add an event handler to its `Click` event.
-
-```csharp
-Button upButton = FindViewById
- :::column-end:::
-:::row-end:::
-
-
-## Samples
+- [Segoe UI Variable](https://aka.ms/SegoeUIVariable) (see [Typography in Windows](../signature-experiences/typography.md))
+- [Segoe Fluent Icons](https://aka.ms/SegoeFluentIcons) (see [Segoe Fluent Icons font](../style/segoe-fluent-icons-font.md))
+- [Segoe MDL2](https://aka.ms/segoemdl2) (see [Segoe MDL2 Assets icons](../style/segoe-ui-symbol-font.md))
+
+## Windows UI Kit
+
+:::image type="content" source="images/windows-ui-kit.png" alt-text="A cover image of the Windows UI Kit Figma library":::
+
+The Windows Design Kit for Figma provides a comprehensive toolkit to help developers and designers create visually consistent and engaging Windows apps
+
+The Windows Design Kit is a Figma library that includes:
+
+- **UI components**: Prebuilt elements like buttons, toggles, sliders, and more.
-
-**Fluent XAML Theme Editor**
-The Fluent XAML Theme Editor is a tool that helps demonstrate the flexibility of the Fluent Design System as well as supports the app development process by generating XAML markup for our ResourceDictionary framework used in Windows applications.
-Download the tool sample Check out the tool on GitHub
+- **Design patterns**: Templates for navigation, dialogs, and layouts.
-
-**VanArsdel**
-The Van Arsdel, Ltd. end-to-end Windows sample app was built to showcase the next wave of the Microsoft Fluent Design System. It makes extensive use of the improved density and new controls in the Windows UI Library as well as powerful underlying features of the UX framework and composition. The sample shows how you can build a rich, productive experience for managing and purchasing IoT devices (in this case, lamps).
-Download the VanArsdel sample Check out the VanArsdel sample on GitHub
+- **Styles and tokens**: Predefined colors, typography, and spacing.
-
-**BuildCast**
-BuildCast is an end-to-end sample built to showcase the Fluent Design System and Windows. It permits browsing, downloading, and playback of select video podcasts, including some Windows tech enthusiast feeds. It also features ink notes, bookmarks, and remote playback. This sample was initially shown at the 2017 Build conference during the Build Amazing Apps with Fluent Design talk.
-Download the BuildCast sample Check out the BuildCast sample on GitHub
+> [!div class="button"]
+> [Windows UI Kit for Figma](https://aka.ms/WinUI/3.0-figma-toolkit)
-
-**Lunch Scheduler**
-A Windows app sample that schedules lunches with your friends and coworkers. You create a lunch, invite friends to a restaurant of interest, and the app takes care of the lunch management for all involved parties. This app incorporates elements of the Fluent Design System in a Windows app, including acrylic, reveal, and connected animations. Download the Lunch Scheduler sample Check out the Lunch Scheduler sample on GitHub
+## WinUI Gallery
+The Design Guidance section of the WinUI Gallery offers best practices and tools to help you choose and apply the right colors, typography, and icons for your app. The Accessibility section includes code snippets and tips to make your app more inclusive and accessible to all users.
+
+:::image type="content" source="images/winui-gallery.png" alt-text="A screenshot of the Design Guidance section of the WinUI 3 Gallery":::
+
+> [!div class="button"]
+> [Design Guidance in WinUI Gallery](winui3gallery://item/Color)
+
+## Microsoft Store Asset Guidance Kit
+
+:::image type="content" source="images/store-asset-kit.png" alt-text="A cover image of the Microsoft Store Asset Guidance Kit":::
-## Want more code?
+The Microsoft Store Asset Guidance Kit for Figma provides templates and tools to help create high-quality screenshots, app icons, and other assets for publishing on the Microsoft Store.
+
+This kit supports the full process of creating, testing, and submitting app and game assets. It includes guidance for logo and icon sizing, along with previews that show how your icon will appear in the Store after submission to Partner Center. It also offers customizable templates to help produce consistent, polished screenshots for your app or game.
+
+> [!div class="button"]
+> [Microsoft Store Asset Guidance Kit for Figma](https://www.figma.com/community/file/1568793421368412416)
+
+## Samples
-Check out the Windows sample page for complete list of all our Windows app samples. Go to the samples portal
+Check out the [Samples and resources page](https://developer.microsoft.com/windows/samples) for complete list of all our Windows app samples.
diff --git a/hub/apps/design/globalizing/adjust-layout-and-fonts--and-support-rtl.md b/hub/apps/design/globalizing/adjust-layout-and-fonts--and-support-rtl.md
index b1eb3c10eb..e0135ee565 100644
--- a/hub/apps/design/globalizing/adjust-layout-and-fonts--and-support-rtl.md
+++ b/hub/apps/design/globalizing/adjust-layout-and-fonts--and-support-rtl.md
@@ -5,7 +5,7 @@ ms.assetid: F2522B07-017D-40F1-B3C8-C4D0DFD03AC3
label: Adjust layout and fonts, and support RTL
template: detail.hbs
ms.date: 05/11/2018
-ms.topic: article
+ms.topic: how-to
keywords: windows 10, uwp, localizability, localization, rtl, ltr
ms.localizationpriority: medium
---
diff --git a/hub/apps/design/globalizing/guidelines-and-checklist-for-globalizing-your-app.md b/hub/apps/design/globalizing/guidelines-and-checklist-for-globalizing-your-app.md
index 7b22824a21..420bf5230c 100644
--- a/hub/apps/design/globalizing/guidelines-and-checklist-for-globalizing-your-app.md
+++ b/hub/apps/design/globalizing/guidelines-and-checklist-for-globalizing-your-app.md
@@ -20,7 +20,7 @@ Design and develop your app in such a way that it functions appropriately on sys
| Appropriately format numbers, dates, times, addresses, and phone numbers. | These formats vary between cultures, regions, languages, and markets. If you're displaying these data then use [**Globalization**](/uwp/api/Windows.Globalization?branch=live) APIs to get the format appropriate for a particular audience. See [Globalize your date/time/number formats](use-global-ready-formats.md). The order in which family and given names are displayed, and the format of addresses, can differ as well. Use standard date, time, and number displays. Use standard date and time picker controls. Use standard address information. |
| Support international units of measurement and currency. | Different units and scales are used in different countries, although the most popular are the metric system and the imperial system. Be sure to support the correct system measurement if you deal with measurements such as length, temperature, and area. Use the [**GeographicRegion.CurrenciesInUse**](/uwp/api/windows.globalization.geographicregion.CurrenciesInUse) property to get the set of currencies in use in a region. |
| Use Unicode for character encoding. | By default, Microsoft Visual Studio uses Unicode character encoding for all documents. If you're using a different editor, be sure to save source files in the appropriate Unicode character encodings. All Windows Runtime APIs return UTF-16 encoded strings. |
-| Support international paper sizes. | The most common paper sizes differ between countries, so if you include features that depend on paper size, such as printing, be sure to support and test common international sizes. |
+| Support international paper sizes. | The most common paper sizes differ between countries/regions, so if you include features that depend on paper size, such as printing, be sure to support and test common international sizes. |
| Record the language of the keyboard or IME. | When your app asks the user for text input, record the language tag for the currently enabled keyboard layout or Input Method Editor (IME). This ensures that when the input is displayed later it's presented to the user with the appropriate formatting. Use the [**Language.CurrentInputMethodLanguageTag**](/uwp/api/windows.globalization.language.CurrentInputMethodLanguageTag) property to get the current input language. |
| Don't use language to assume a user's region; and don't use region to assume a user's language. | Language and region are separate concepts. A user can speak a particular regional variant of a language, like en-GB for English as spoken in the UK, but the user might be in an entirely different country or region. Consider whether your app requires knowledge about the user's language (for UI text, for example), or region (for licensing, for example). For more info, see [Understand user profile languages and app manifest languages](manage-language-and-region.md). |
| The rules for comparing language tags are non-trivial. | [BCP-47 language tags](https://tools.ietf.org/html/bcp47) are complex. There are a number of issues when comparing language tags, including issues with matching script information, legacy tags, and multiple regional variants. The Resource Management System in Windows takes care of matching for you. You can specify a set of resources in any languages, and the system chooses the appropriate one for the user and the app. See [App resources and the Resource Management System](/windows/uwp/app-resources/index) and [How the Resource Management System matches language tags](/windows/uwp/app-resources/how-rms-matches-lang-tags). |
diff --git a/hub/apps/design/globalizing/japanese-era-change.md b/hub/apps/design/globalizing/japanese-era-change.md
index 78247bf7b2..65b009dd7a 100644
--- a/hub/apps/design/globalizing/japanese-era-change.md
+++ b/hub/apps/design/globalizing/japanese-era-change.md
@@ -3,7 +3,7 @@ title: Prepare your application for the Japanese era change
description: Learn about the May 2019 Japanese era change and how to prepare your application.
ms.assetid: 5A945F9A-8632-4038-ADD6-C0568091EF27
ms.date: 04/26/2019
-ms.topic: article
+ms.topic: how-to
keywords: windows 10, uwp, localizability, localization, japanese, era
ms.localizationpriority: high
---
@@ -62,14 +62,14 @@ Your device should now be configured to use the Japanese calendar, and it will r
1. Right-click the date and time area in the lower-right corner of the screen.
2. Select **Adjust date/time**.
-3. In the Settings app, under **Change date and time**, select **Change**.
+3. In Settings, under **Change date and time**, select **Change**.
4. Change the date to on or after May 1, 2019.
### On Windows 11
1. Right-click the date and time area in the lower-right corner of the screen.
2. Select **Adjust date/time**.
-3. In the Settings app, under **Set the date and time manually**, select **Change**.
+3. In Settings, under **Set the date and time manually**, select **Change**.
4. Change the date to on or after May 1, 2019.
> [!NOTE]
@@ -152,4 +152,4 @@ The following APIs will be impacted:
* [Using the Registry to Test the New Japanese Era on Windows](/archive/blogs/shawnste/using-the-registry-to-test-the-new-japanese-era-on-windows)
* [Gannen vs Ichinen](/archive/blogs/shawnste/gannen-vs-ichinen)
* [Updates for May 2019 Japan Era Change](https://support.microsoft.com/help/4470918/updates-for-may-2019-japan-era-change)
-* [Handling a new era in the Japanese calendar in .NET](https://devblogs.microsoft.com/dotnet/handling-a-new-era-in-the-japanese-calendar-in-net/)
\ No newline at end of file
+* [Handling a new era in the Japanese calendar in .NET](https://devblogs.microsoft.com/dotnet/handling-a-new-era-in-the-japanese-calendar-in-net/)
diff --git a/hub/apps/design/globalizing/loc-international-fonts.md b/hub/apps/design/globalizing/loc-international-fonts.md
index 22a8c0f183..1c740b6a06 100644
--- a/hub/apps/design/globalizing/loc-international-fonts.md
+++ b/hub/apps/design/globalizing/loc-international-fonts.md
@@ -11,7 +11,7 @@ ms.localizationpriority: medium
This topic lists the fonts available for Windows apps that are localized into languages other than U.S. English.
-In the following table, the "Language tag" column lists the [BCP-47 language tag](https://tools.ietf.org/html/bcp47) of the language. To see a list of the language tags specifically supported by the Microsoft Store, see [Supported languages](../../publish/publish-your-app/supported-languages.md).
+In the following table, the "Language tag" column lists the [BCP-47 language tag](https://tools.ietf.org/html/bcp47) of the language. To see a list of the language tags specifically supported by the Microsoft Store, see [Supported languages](../../publish/publish-your-app/msix/app-package-requirements.md#supported-languages).
| Language | Language tag | Font used in Windows |
| --------- | ----------- | -------------------- |
@@ -126,4 +126,4 @@ In the following table, the "Language tag" column lists the [BCP-47 language tag
## Related topics
* [BCP-47 language tag](https://tools.ietf.org/html/bcp47)
-* [Supported languages](../../publish//publish-your-app/supported-languages.md)
+* [Supported languages](../../publish/publish-your-app/msix/app-package-requirements.md#supported-languages)
diff --git a/hub/apps/design/globalizing/manage-language-and-region.md b/hub/apps/design/globalizing/manage-language-and-region.md
index 58e0b03f09..297db260d0 100644
--- a/hub/apps/design/globalizing/manage-language-and-region.md
+++ b/hub/apps/design/globalizing/manage-language-and-region.md
@@ -4,7 +4,7 @@ title: Understand user profile languages and app manifest languages
ms.assetid: 22D3A937-736A-4121-8285-A55DED56E594
template: detail.hbs
ms.date: 09/24/2020
-ms.topic: article
+ms.topic: how-to
keywords: windows 10, uwp, globalization, localizability, localization
ms.localizationpriority: medium
---
@@ -51,7 +51,7 @@ The other option is to replace that single "x-generate" `` element in
To begin with, your app manifest language list will only contain one language. Perhaps that's en-US. But eventually—as you either manually configure your manifest, or as you add translated resources to your project—that list will grow.
-When your app is in the Microsoft Store, the languages in the app manifest language list are the ones that are displayed to customers. For a list of BCP-47 language tags specifically supported by the Microsoft Store, see [Supported languages](../../publish/publish-your-app/supported-languages.md).
+When your app is in the Microsoft Store, the languages in the app manifest language list are the ones that are displayed to customers. For a list of BCP-47 language tags specifically supported by the Microsoft Store, see [Supported languages](../../publish/publish-your-app/msix/app-package-requirements.md#supported-languages).
In code you can use the [**ApplicationLanguages.ManifestLanguages**](/uwp/api/windows.globalization.applicationlanguages.ManifestLanguages) property to access the app manifest language list as a read-only list of strings, where each string is a single BCP-47 language tag.
@@ -187,7 +187,7 @@ The following table contains examples of what the user would see in your app's U
>[!NOTE]
-> For a list of standard country/region codes used by Microsoft, see the [Official Country/Region List](../../publish/publish-your-app/supported-languages.md).
+> For a list of standard country/region codes used by Microsoft, see the [Official Country/Region List](../../publish/publish-your-app/msix/app-package-requirements.md#supported-languages).
## Important APIs
* [GlobalizationPreferences.Languages](/uwp/api/windows.system.userprofile.globalizationpreferences.Languages)
@@ -205,7 +205,7 @@ The following table contains examples of what the user would see in your app's U
* [BCP-47 language tag](https://tools.ietf.org/html/bcp47)
* [IANA language subtag registry](https://www.iana.org/assignments/language-subtag-registry)
* [Tailor your resources for language, scale, high contrast, and other qualifiers](/windows/uwp/app-resources/tailor-resources-lang-scale-contrast)
-* [Supported languages](../../publish/publish-your-app/supported-languages.md)
+* [Supported languages](../../publish/publish-your-app/msix/app-package-requirements.md#supported-languages)
* [Globalize your date/time/number formats](use-global-ready-formats.md)
* [How the Resource Management System matches language tags](/windows/uwp/app-resources/how-rms-matches-lang-tags)
diff --git a/hub/apps/design/globalizing/mat-announcements.md b/hub/apps/design/globalizing/mat-announcements.md
index 2452886d0e..2354112127 100644
--- a/hub/apps/design/globalizing/mat-announcements.md
+++ b/hub/apps/design/globalizing/mat-announcements.md
@@ -2,64 +2,19 @@
title: Announcements
description: Recent announcements for the Multilingual App Toolkit (MAT).
ms.topic: article
-ms.date: 11/08/2022
+ms.date: 10/17/2025
---
# Announcements
Learn about important Multilingual App Toolkit (MAT) news and updates here.
-## Multilingual App Toolkit 4.1
+## Multilingual App Toolkit support ended on October 15, 2025
-The Multilingual App Toolkit 4.1 update released.
+The Multilingual App Toolkit has been deprecated. This toolkit reached end-of-support on October 15, 2025, and is no longer supported.
-### MAT 4.1 audience
+If you are an existing user of the Multilingual App Toolkit, you can continue to use it without any loss of functionality after this date. However, no further updates are planned, and new installations will not be possible after October 15, 2025.
-This extension is provided free to any Visual Studio developers interested in localizing their supported project types (such as UWP, WPF, VSIX, Xamarin for iOS/Android, and others).
+As this toolkit uses the industry standard XLIFF format, consider using a similar Computer-Aided Translation (CAT) tool that supports this format.
-### What's new in MAT 4.1
-
-- Visual Studio 2022 support.
-
-### MAT 4.1 Features
-
-- **IDE and build integration**: End-to-end resource file localization. Translated resources are synchronized during builds.
-- **Machine Translation**: Use Microsoft Translator and Language portal for translation.
-- **Import/Export**: Recycle existing translations by importing .xlf files, or export machine translations for human review.
-
-For more details, see [Use the Multilingual App Toolkit](use-mat.md).
-
-### Download MAT 4.1
-
-Download the [Multilingual App Toolkit 4.1 (VS 2022+)](https://marketplace.visualstudio.com/items?itemName=dts-publisher.mat2022) from the [Visual Studio Marketplace](https://marketplace.visualstudio.com/).
-
-:::image type="content" source="images/mat-extension1.jpg" alt-text="Screenshot of the Multilingual App Toolkit 4.1 download page on the Visual Studio Marketplace.":::
-
-## Multilingual App Toolkit 4.1 Editor
-
-Multilingual App Toolkit 4.1 Editor updates released.
-
-### MAT 4.1 Editor audience
-
-The Multilingual App Toolkit Editor is a dedicated localization editor for human translators that, through its support for XLIFF, is not limited to any product or business category.
-
-Although this editor is a part of the Multilingual App Toolkit and can be incorporated into workflows using the MAT Visual Studio extension, the use of Visual Studio is not a requirement. For example, this editor can be leveraged by Microsoft Dynamics 365 Translation Service (DTS) users to revise the output of machine translations produced by DTS.
-
-### What's new in the MAT 4.1 Editor
-
-- Allow installation without Visual Studio as a pre-requisite.
-- Allow users to configure MS Translator provider from the UI.
-- Re-enable Language Portal as a translation provider.
-- Redesign of telemetry collection to satisfy current compliance requirements.
-
-For more details, see [Multilingual App Toolkit Editor](multilingual-app-toolkit-editor-downloads.md).
-
-### Download MAT 4.1 Editor
-
-See [Multilingual App Toolkit 4.1 Editor](multilingual-app-toolkit-editor-downloads.md) for language downloads.
-
-:::image type="content" source="images/mateditor.png" alt-text="Screenshot of the Multilingual App Toolkit 4.1 Editor.":::
-
-## See also
-
-See the ([Multilingual-App-Toolkit](https://github.com/microsoft/Multilingual-App-Toolkit)) GitHub repo for a variety of samples and to provide feedback, ask questions, and report issues or bugs.
+For more information, contact your Microsoft representative or send an email to [dtssup@microsoft.com](mailto:dtssup@microsoft.com).
diff --git a/hub/apps/design/globalizing/mat-faq-troubleshooting.yml b/hub/apps/design/globalizing/mat-faq-troubleshooting.yml
deleted file mode 100644
index 5a22621920..0000000000
--- a/hub/apps/design/globalizing/mat-faq-troubleshooting.yml
+++ /dev/null
@@ -1,224 +0,0 @@
-### YamlMime:FAQ
-metadata:
- description: This topic provides answers to frequently-asked questions and issues related to the Multilingual App Toolkit (MAT).
- title: Multilingual App Toolkit FAQ & troubleshooting
- template: detail.hbs
- ms.date: 11/13/2017
- ms.topic: article
- keywords: windows 10, uwp, globalization, localizability, localization
- ms.localizationpriority: medium
-
-title: Multilingual App Toolkit FAQ & troubleshooting
-summary: |
- This topic provides answers to frequently-asked questions and issues related to the Multilingual App Toolkit (MAT).
-
- Also see [Use the Multilingual App Toolkit](use-mat.md).
-
- **Note** The toolkit supports both .resw (XAML) and .resjson (JavaScript) files. But in this topic we'll refer only to .resw files. A .resw file is known as a Resources File. It contains strings, either in the default language or translated into another language. The folder that contains a .resw file is typically named for the value of a language tag.
-
-
-sections:
- - name: Ignored
- questions:
- - question: |
- Do I need .resw files in multiple languages?
- answer: |
- No. One of the key benefits of the Toolkit is that .resw files in multiple languages are not required. The Toolkit manages and synchronizes your app's resources by using .xlf files. This removes the challenges associated with keeping content synchronized across multiple .resw files.
-
- Projects that contain matching .resw and .xlf files cause the translations from the .xlf file to be ignored. When this happens, a warning is displayed during the build to let you know that the .xlf translations are not included in the final app. A .resw file and .xlf file match when they have a target language with the same language code. An example of a matching pair would be `Strings\de-DE\Resources.resw` and an `.de-DE.xlf` file (containing `target-language="de-DE"`).
-
- - question: |
- Can I have .resw files in multiple languages?
- answer: |
- You can, but we don't recommend it. If you want to include .resw files in multiple languages in your project and use the Toolkit, make sure you don't have matching .resw and .xlf files.
-
- - question: |
- I don't see an option in the Tools menu to enable the Multilingual App Toolkit
- answer: |
- Try these steps.
-
- - Make sure you select the project node, not the solution node, before opening the **Tools** menu.
- - Confirm that the toolkit extension is installed by using the Visual Studio Extension Manager.
- - Confirm that your project is a UWP project.
-
- - question: |
- When I build my project, I don't see a message saying that a Multilingual App Toolkit build has started
- answer: |
- Confirm that you've enabled the MAT for your project. On the **Tools** menu, select **Multilingual App Toolkit** > **Enable selection**. If your project was enabled with a previous version, then disable and re-enable the MAT by using the **Tools** menu. This updates the project to work with the new version of the Toolkit.
-
- Ensure that the "Build Task for all Visual Studio editions" component was installed. This build component is installed with the extension, but it can be manually deselected during the installation. This component is required to update the .xlf files and add the translation into the PRI file. When this component is installed and working correctly, you will see these build messages.
-
- ```dosbatch
- 1> Multilingual App Toolkit build started.
- 1> Multilingual App Toolkit build completed successfully.
- ```
-
- - question: |
- The toolkit is reporting that it didn't locate any XLIFF language files during the build
- answer: |
- ```dosbatch
- No XLIFF language files were found. The app will not contain any localized resources.
- ```
-
- This message is displayed when the toolkit doesn't find any files in the project with an extension of .xlf. The toolkit generates and keeps these files in the `MultilingualResources` folder by default. They can be moved; but it's best to leave them in that folder because that allows the Multilingual Editor to locate the related metadata files.
-
- - question: |
- My .xlf file is not included in the list of files processed by the toolkit during build
- answer: |
- If you manually exclude an .xlf file from the project, and then re-include it, the file type element may not be set correctly. In Visual Studio, select the file and check the Properties window. The file's Build Action should be set to XliffResource and Copy to Output Directory should be set to Do not copy. This is how the reference should look in your project file.
-
- ```xml
-
- ```
-
- - question: |
- I've added .xlf-based languages. Where are my strings?
- answer: |
- Your default language Resources File (.resw) is your canonical "schema" of the strings that your app uses. Translated Resources Files can contain all, or a subset of, these strings.
-
- When you build your project, your Resources Files and your .xlf files are synchronized.
-
- - The .xlf files are updated to reflect any added or removed string, or added or removed Resources Files.
- - The Resources Files are updated to reflected any translated strings in the .xlf files.
-
- This is explained in detail in [Use the Multilingual App Toolkit](use-mat.md).
-
- - question: |
- When I build my project, the .xlf files remain empty
- answer: |
- Before you can use the MAT effectively, your app needs to be localizable. This is explained in detail in [Use the Multilingual App Toolkit](use-mat.md).
-
- - question: |
- What is Microsoft Translator?
- answer: |
- Microsoft Translator is a cloud-based service that provides machine-based translation. Machine translation is ideal for gaining access to translation when human translation is not reasonable to obtain. You can learn more at [Microsoft Translator](https://www.microsofttranslator.com/).
-
- The Toolkit uses the Microsoft Translator service to provide translation suggestions to you. You can see which languages are supported by Microsoft Translator when the Microsoft Translator icon is present in the Translation Languages dialog.
-
- You can quickly translate your app using Microsoft Translator from within the Multilingual Editor by selecting a string and clicking **Translate**.
-
- - question: |
- What is pseudo language, and what are pseudo resource trackers?
- answer: |
- Pseudo language is an artificial modification of the software product intended to simulate real language localization. You can find more details about pseudo language and pseudo resource trackers in [Use the Multilingual App Toolkit](use-mat.md).
-
- - question: |
- How do I set my language preference to pseudo language, so that I can test my pseudo-loc'd strings?
- answer: |
- This is explained in [Use the Multilingual App Toolkit](use-mat.md).
-
- - question: |
- What kind of localizability issues can I find using pseudo language?
- answer: |
- This is explained in [Use the Multilingual App Toolkit](use-mat.md).
-
- - question: |
- I'm not seeing any translations when I launch my app, or my app is only partially translated
- answer: |
- Open the .xlf file in the Multilingual Editor to see whether the translations are present. When strings in the default language .resw file are changed explicitly, any corresponding translations are removed from .xlf files. This is to ensure that a translation matches its source string. Translate the string(s) in the .xlf file(s), and rebuild to update the non-default language .resw file(s).
-
- If your strings are translated in the .xlf file(s), but they're not appearing in your app, then rebuild your project to update the non-default language .resw file(s). Visual Studio optimizes the Build command to build only files that have changed since the last Build.
-
- Check your language preference order. Ensure that the language you want to test is listed at the top of your language preference list in **Settings**.
-
- - question: |
- The toolkit is reporting error 0x80004004 in the build output
- answer: |
- ```dosbatch
- Merge of Loc PRI file failed calling makepri.exe: "0x80004004"
- ```
-
- This message can be displayed when the region format conflicts with the toolkit build operation. The workaround is to change your language in **Settings** to en-US while building.
-
-
- - question: |
- The toolkit is reporting error 0x80004005 in the build output
- answer: |
- ```dosbatch
- Merge of Loc PRI file failed calling makepri.exe: "0x80004005"
- ```
-
- This message can be displayed when the .xlf file contains an unsupported target language. For example, "zh-cht" is incorrect (change it to "zh-hant"), and "zh-chs" is incorrect (change it to "zh-hans").
-
- - question: |
- Is there a way to find out more information about the errors I'm seeing?
- answer: |
- Yes, you can turn on verbose logging in Visual Studio. Click **Tools** > **Options** > **Projects and Solutions** > **Build and Run**. Change **MSBuild project build output verbosity** from Minimal to Normal or higher.
-
- Running MSBuild from the command line can also produce additional messages.
-
- ```dosbatch
- msbuild /t:rebuild
- ```
-
- - question: |
- Import translation failed
- answer: |
- The import process performs basic validation before importing. This ensures that the target culture information in the files being imported matches that in the existing .xlf files. Open the .xlf files in the Multilingual Editor and make sure that the culture information matches.
-
- - question: |
- What if my translator doesn't have Windows 10, Windows 11 and/or Visual Studio and/or the Multilingual App Toolkit installed?
- answer: |
- When you select **Output: Mail recipient** in the Export string resources dialog, the email includes a link to download and install the Multilingual App Toolkit (MAT). Your translator can still install the MAT standalone Multilingual Editor tool even without Windows 10, Windows 11 nor Visual Studio.
-
- For more details, see [Use the Multilingual App Toolkit](use-mat.md).
-
- - question: |
- What happened to the `MarkupRules.xml` and `ResourcesLocks.xml` files?
- answer: |
- The Multilingual App Toolkit doesn't use proprietary resource locking files. Instead, the XLIFF 1.2 tag `` is added directly to the .xlf file to identify strings that are not modified during Machine Translation. This enables the XLIFF file to be self-contained, and allows for per-file based resource locking.
-
- These extra support files are no longer needed and you can safely delete them if you have them.
-
- - question: |
- What happened to the .tpx file?
- answer: |
- The .tpx file provided an easy way to include the `MarkupRules.xml` and `ResourcesLocks.xml` files when the .xlf file was sent out for translation. This functionality is no longer required.
-
- If you have translations in a .tpx file that you need to retrieve, simply rename the .tpx file extension to .zip. This will allow you to open and extract the contents with File Explorer or any .zip compatible tool.
-
- - question: |
- I think I've done everything right, but it still isn't working
- answer: |
- Try these steps.
-
- 1. Add translations using one of the methods already described.
- 2. Dump the .pri file (see [MakePri.exe command-line options](/windows/uwp/app-resources/makepri-exe-command-options)) to see whether your translations are in the .pri file. Translations will appear with language code and translated value like this.
- ```xml
-
- [!!_Ŝéãřćĥ_!!]
-
- ```
- 3. Build from a Command Prompt; the resulting error may have more details than what is reported in the build output.
-
- - question: |
- My app failed certification to the Microsoft Store
- answer: |
- Before you start the Microsoft Store Certification process, you must exclude the `.qps-ploc.xlf` file from your project. Pseudo language is used to detect potential localizability issues or bugs, but it is not a valid Microsoft Store language. If it is not removed then your app will fail during the Microsoft Store Certification process.
-
- - question: |
- What data are you collecting?
- answer: |
- The Multilingual App Toolkit Visual Studio (MAT VS) extension collects anonymous usage data and sends it to Microsoft servers to help improve our products and services. Telemetry is off by default and can be enabled or disabled at any time.
-
- Usage data: This is anonymous information about what features are being used. For example: adding a new language to a MAT-enabled solution.
-
- Configuration data: This is anonymous information regarding the version of MAT VS installed on and the version of Windows it is being run on.
-
- Below is a concrete example of the data collected in the following format, Key / Value / Notes:
-
- - AddLanguage / MachineID: xxxx / This is based on a hash of the network adapter NIC. It is not guaranteed to be unique.
- - TimeStamp / 2022/01/07T22:04:45.0000000Z / Time event took place.
- - MAT_Version / 4.1.02 / Version of MAT installed.
- - Languages / fr,es,de/DE / List of languages added to project.
-
- All data is collected using Application Insights and sent to Azure Log analytics. Data is retained for 90 days then deleted.
-
-
-additionalContent: |
-
- ## Related topics
-
- * [Use the Multilingual App Toolkit](use-mat.md)
- * [Microsoft Translator](https://www.microsofttranslator.com/)
- * [MakePri.exe command-line options](/windows/uwp/app-resources/makepri-exe-command-options)
diff --git a/hub/apps/design/globalizing/multilingual-app-toolkit-editor-downloads.md b/hub/apps/design/globalizing/multilingual-app-toolkit-editor-downloads.md
deleted file mode 100644
index 007e754836..0000000000
--- a/hub/apps/design/globalizing/multilingual-app-toolkit-editor-downloads.md
+++ /dev/null
@@ -1,88 +0,0 @@
----
-title: Multilingual App Toolkit Editor - Windows app development
-description: Download the Multilingual App Toolkit Editor to help you localize your apps with localization file management, translation support, and editing tools.
-ms.topic: article
-ms.date: 10/18/2021
----
-
-# Multilingual App Toolkit Editor
-
-Use the standalone [**Multilingual App Toolkit Editor**](use-mat.md) to help you localize your apps with localization file management, translation support, and editing tools.
-
-Each of the following downloads contain an .msi installer for the Multilingual App Toolkit Editor (also known as the Multilingual Editor). The installer is available in 11 langauges, please select the link for your preferred language.
-
-- To start the installation immediately, click **Run**.
-- To save the download to your computer for installation at a later time, click **Save**.
-
-:::row:::
- :::column span="":::
- [English](https://go.microsoft.com/fwlink/p/?LinkID=245767&clcid=0x409)
- :::column-end:::
- :::column span="":::
- [Japanese](https://go.microsoft.com/fwlink/p/?LinkID=245767&clcid=0x411)
- :::column-end:::
-:::row-end:::
-:::row:::
- :::column span="":::
- [Chinese (Simplified)](https://go.microsoft.com/fwlink/p/?LinkID=245767&clcid=0x804)
- :::column-end:::
- :::column span="":::
- [Korean](https://go.microsoft.com/fwlink/p/?LinkID=245767&clcid=0x412)
- :::column-end:::
-:::row-end:::
-:::row:::
- :::column span="":::
- [Chinese (Traditional)](https://go.microsoft.com/fwlink/p/?LinkID=245767&clcid=0x404)
- :::column-end:::
- :::column span="":::
- [Portuguese (Brazil)](https://go.microsoft.com/fwlink/p/?LinkID=245767&clcid=0x416)
- :::column-end:::
-:::row-end:::
-:::row:::
- :::column span="":::
- [French](https://go.microsoft.com/fwlink/p/?LinkID=2206712&clcid=0x40c)
- :::column-end:::
- :::column span="":::
- [Russian](https://go.microsoft.com/fwlink/p/?LinkID=245767&clcid=0x419)
- :::column-end:::
-:::row-end:::
-:::row:::
- :::column span="":::
- [German](https://go.microsoft.com/fwlink/p/?LinkID=2206559&clcid=0x407)
- :::column-end:::
- :::column span="":::
- [Spanish](https://go.microsoft.com/fwlink/p/?LinkID=245767&clcid=0x40a)
- :::column-end:::
-:::row-end:::
-:::row:::
- :::column span="":::
- [Italian](https://go.microsoft.com/fwlink/p/?LinkID=245767&clcid=0x410)
- :::column-end:::
- :::column span="":::
- :::column-end:::
-:::row-end:::
-
-> [!Important]
-> If using Visual Studio, you should also download and install [Multilingual App Toolkit Visual Studio 2017-2019](https://marketplace.visualstudio.com/items?itemName=MultilingualAppToolkit.MultilingualAppToolkit-18308) or [Multilingual App Toolkit Visual Studio 2022+](https://marketplace.visualstudio.com/items?itemName=dts-publisher.mat2022).
-
-## Overview
-
-The Multilingual Editor helps create simpler translation workflows by focusing on the following areas:
-
-- Use to easily edit translated strings.
-- Get translations and suggestions quickly via the integrated Microsoft Language Portal and the Microsoft Translator services (requires an active Internet connection).
-- Narrow down on the desired translation units by filtering on text and states.
-- You can also quickly edit data stored in XLIFF files by adjusting pseudo and actual translations.
-
-## Installation requirements
-
-> [!IMPORTANT]
-> Ensure you have the latest service pack and critical updates for your installed versions of Windows and Visual Studio.
-
-- **Supported operating systems**: Windows 10 or later (x86 and x64)
-- **Disk space requirements**: 6 MB (x86 and x64)
-
-## Additional info
-
-- You must have an active Internet connection to use the Microsoft Language Portal and Microsoft Translator services.
-- Microsoft Translator requires a subscription key for the Microsoft Translator Text API.
diff --git a/hub/apps/design/globalizing/prepare-your-app-for-localization.md b/hub/apps/design/globalizing/prepare-your-app-for-localization.md
index 0548aa6c8a..a529b12581 100644
--- a/hub/apps/design/globalizing/prepare-your-app-for-localization.md
+++ b/hub/apps/design/globalizing/prepare-your-app-for-localization.md
@@ -4,7 +4,7 @@ title: Make your app localizable
ms.assetid: 06E1D4BB-59EA-4D71-99AC-7CB93D2A58A7
template: detail.hbs
ms.date: 11/07/2017
-ms.topic: article
+ms.topic: how-to
keywords: windows 10, uwp, globalization, localizability, localization
ms.localizationpriority: medium
---
diff --git a/hub/apps/design/globalizing/use-global-ready-formats.md b/hub/apps/design/globalizing/use-global-ready-formats.md
index 63f1f92167..fe35a6a3ad 100644
--- a/hub/apps/design/globalizing/use-global-ready-formats.md
+++ b/hub/apps/design/globalizing/use-global-ready-formats.md
@@ -4,7 +4,7 @@ title: Globalize your date/time/number formats
ms.assetid: 6ECE8BA4-9A7D-49A6-81EE-AB2BE7F0254F
template: detail.hbs
ms.date: 11/07/2017
-ms.topic: article
+ms.topic: how-to
keywords: windows 10, uwp, globalization, localizability, localization
ms.localizationpriority: medium
---
@@ -108,7 +108,7 @@ To ensure that the preferred calendar format is used, you can use the standard [
## Format phone numbers appropriately
-Phone numbers are formatted differently across regions. The number of digits, how the digits are grouped, and the significance of certain parts of the phone number vary between countries. Starting in Windows 10, version 1607, you can use classes in the [**PhoneNumberFormatting**](/uwp/api/windows.globalization.phonenumberformatting?branch=live) namespace to format phone numbers appropriately for the current region.
+Phone numbers are formatted differently across regions. The number of digits, how the digits are grouped, and the significance of certain parts of the phone number vary between countries/regions. Starting in Windows 10, version 1607, you can use classes in the [**PhoneNumberFormatting**](/uwp/api/windows.globalization.phonenumberformatting?branch=live) namespace to format phone numbers appropriately for the current region.
[**PhoneNumberInfo**](/uwp/api/windows.globalization.phonenumberformatting.phonenumberinfo?branch=live) parses a string of digits and allows you to: determine whether the digits are a valid phone number in the current region; compare two numbers for equality; and to extract the different functional parts of the phone number, such as country code or geographical area code.
diff --git a/hub/apps/design/globalizing/use-mat.md b/hub/apps/design/globalizing/use-mat.md
deleted file mode 100644
index 2f9d708b9d..0000000000
--- a/hub/apps/design/globalizing/use-mat.md
+++ /dev/null
@@ -1,178 +0,0 @@
----
-description: The Multilingual App Toolkit (MAT) integrates with Microsoft Visual Studio 2019 to provide Windows apps with translation support, translation file management, and editor tools.
-title: Use the Multilingual App Toolkit
-template: detail.hbs
-ms.date: 09/24/2020
-ms.topic: article
-keywords: windows 10, uwp, globalization, localizability, localization
-ms.localizationpriority: medium
----
-
-# Use the Multilingual App Toolkit
-
-The Multilingual App Toolkit (MAT) integrates with Microsoft Visual Studio to provide Windows apps with translation support, translation file management, and editor tools. Here are some of the value propositions of the toolkit.
-
-- Helps you manage resource changes and translation status during development.
-- Provides a UI for choosing languages based on configured translation providers.
-- Supports the localization industry-standard XLIFF file format.
-- Provides a pseudo-language engine to help identify translation issues during development.
-- Connects with the Microsoft Language Portal to easily access translated strings and terminology.
-- Connects with the Microsoft Translator for quick translation suggestions.
-
-## How to use the toolkit
-
-### Step 1. Design your app for globalization and localization
-
-Before you can use the MAT effectively, your app needs to be localizable. Specifically, your project should contain one or more Resources Files (.resw) containing your app's strings in the default language. For details, see [Localize strings in your UI and app package manifest](/windows/uwp/app-resources/localize-strings-ui-manifest). Once you've done that, the toolkit makes adding additional languages quick and easy.
-
-For the value proposition of globalization and localization—as well as definitions of the terms **globalization**, **localizability**, and **localization**—see [Globalization and localization](globalizing-portal.md).
-
-Also see [Guidelines for globalization](guidelines-and-checklist-for-globalizing-your-app.md) and [Make your app localizable](prepare-your-app-for-localization.md).
-
-### Step 2. Download and install the Multilingual App Toolkit
-
-There are two parts to the Multilingual App Toolkit (MAT), each with its own installer.
-
-- [Multilingual App Toolkit Extension for Visual Studio 2017-2019](https://marketplace.visualstudio.com/items?itemName=MultilingualAppToolkit.MultilingualAppToolkit-18308). This contains the MAT extension for Visual Studio 2019, in the form of a .vsix installer.
-- [Multilingual App Toolkit 4.1 Extension for Visual Studio 2022 and later](https://marketplace.visualstudio.com/items?itemName=dts-publisher.mat2022). This contains the MAT 4.1 extension for Visual Studio 2022, in the form of a .vsix installer.
-- [Multilingual app toolkit Editor](multilingual-app-toolkit-editor-downloads.md). This contains the MAT standalone Multilingual Editor tool, in the form of an .msi installer. It also includes the MAT extension for Visual Studio 2015 and for Visual Studio 2013.
-
-If you use Visual Studio 2017 or later, then download and run both installers, one after the other. If you use Visual Studio 2015 or Visual Studio 2013, then download and run the .msi installer.
-
-### Step 3. Enable the Multilingual App Toolkit for your project
-
-The MAT must be enabled for your project before you can begin to localize the app. Here's how to enable the toolkit.
-
-- Open the project solution in Visual Studio.
-- Select the desired project in Solution Explorer.
-- On the **Tools** menu, select **Multilingual App Toolkit** > **Enable selection**.
-
-In the Output window (showing output from Multilingual App Toolkit), watch for the message `Project '' was enabled. The project's source culture is '' `. If this message appears, then the MAT is ready to use.
-
-### Step 4. Add languages to your project
-
-Follow these steps to add languages to your project.
-
-1. Right-click the project node in Solution Explorer.
-2. Click **Multilingual App Toolkit** > **Add translation languages...**.
-3. In the Translation Languages dialog, select the language(s) you want to support, and click OK.
-
-The toolkit does these things in response.
-
-- For each language you added, a new folder is created named for the [BCP-47 language tag](https://tools.ietf.org/html/bcp47) of the language. Inside that folder, new Resources File(s) (.resw) are created to match the one(s) that contain the default language strings.
-- If this is the first time you've added a language, a new folder named `MultilingualResources` is added to the project. Inside that folder, an .xlf file is added for each language. The .xlf files contain a translation unit for each string in each Resources File (.resw) in your project.
-- The Output window confirms the addition of the language(s) that you added.
-
-Whenever you add/remove a default language Resources File (.resw), or you add/remove a string inside a default language Resources File (.resw), rebuild the project to re-synchronize the .xlf files. This ensures that the .xlf files contain the union of the strings in the default language.
-
-Installed Translation Providers—such as the [Microsoft Language Portal](https://www.microsoft.com/Language/) and [Microsoft Translator](https://www.microsofttranslator.com/)—can be used to translate your app's resources. When a provider supports a specific language, the provider's icon is displayed next to the language name in the Translation Languages dialog.
-
-In the Translation Languages dialog, any existing .xlf-based languages that are discovered by the toolkit have their selection box pre-checked to indicate that the language is already included the project.
-
-Once a language is added to the project, it cannot be removed by un-checking the box in the Translation Languages dialog. To remove a language, right-click on the language-specific .xlf file and select **Delete**. If you confirm, then this will also delete the corresponding Resources File (.resw).
-
-### Step 5. Test your app using pseudo language
-
-Pseudo language is an artificial modification of the software product intended to simulate real language localization, but remaining readable to native speakers. Pseudo translation replaces characters and expands the resource string length to detect potential localizability issues or bugs early in the project cycle and before localization starts in earnest.
-
-Follow these steps to pseudo-localize and test your project.
-
-1. Use the Translation Languages dialog to add Pseudo Language (Pseudo) [qps-ploc] to your project.
-1. Right-click the `.qps-ploc.xlf` file in Solution Explorer and click **Multilingual App Toolkit** > **Generate machine translations**.
-1. In **Settings** > **Time & Language** > **Region & language** > **Languages**, click **Add a language**.
-1. In the search box, type `qps-ploc`.
-1. Click `English (qps-ploc)` to add it.
-1. From the language list, select `English (qps-ploc)` and click **Set as default**.
-1. Test your pseudo-localized app. For example, look for UI layout issues where not all of a string is displayed (the string is truncated), or strings that are not translated (but instead hard-coded).
-
-In addition to character replacement and expansion, the pseudo engine provides a unique tracking identifier for each resource. This tracker is prepended to the start of every string and enclosed within brackets `[xxxxx]`. You can use these trackers during visual UI inspection testing. They can help track down specific resources in the product, especially if multiple resources have similar or duplicate text.
-
-In this "Hello, World!" text example, the pseudo translation expands to take about 30 percent more screen space, and then applies the resource tracker.
-
-`"Hello World" -> "Ĥèĺļõ Ŵòŗłđ" -> "[!!_Ĥèĺļõ Ŵòŗłđ_!!]" -> "[hJ8s1][!!_Ĥèĺļõ Ŵòŗłđ_!!]"`
-
-### Step 6. Translate your app into selected languages
-
-The Multilingual App Toolkit is integrated into the build process. During a build, updated strings are automatically added to each language .xlf file.
-After you've tested your app by using Pseudo language, there are three options to translate your app into other languages for release.
-
-#### Option 1. Translate the strings yourself
-
-You can use the Multilingual Editor to translate strings individually. As already mentioned, this is included in [The .msi installer](https://developer.microsoft.com/windows/develop/multilingual-app-toolkit).
-
-- Right-click the .xlf file that you want to translate.
-- Click **Open With...** and select Multilingual Editor. You can optionally click **Set as Default**.
-- For each string, **Source** shows the original string in the default language. In **Translation**, type the string translated into the appropriate language for the .xlf file that you're editing.
-- When you're done, save and close the file.
-
-Rebuild your project to cause the translated strings to be copied into the Resources File (.resw) that corresponds to the .xlf file you were just editing.
-
-You can also launch the Multilingual Editor like this. Go to Start, show all apps, open the Multilingual App Toolkit folder, and click Multilingual Editor to launch it.
-
-#### Option 2. Send the .xlf files to a third party for translation
-
-To outsource the translation and editing work to localizers, select the desired .xlf files in Solution Explorer, right-click them, and click **Multilingual App Toolkit** > **Export translations...**.
-
-Select **Output: Mail recipient** in the Export string resources dialog, and click OK, and your files will be zipped and attached to a new email. Select **Output: File folder location**, browser for a folder and click OK, optionally choose for the files to be zipped, click OK again, and your files will be (zipped and) saved at the location you chose, inside a new folder named for your project.
-
-After your localizers complete the translation work and send you the translated .xlf files, you can import them into your project. Select the desired .xlf files in Solution Explorer, right-click them, and click **Multilingual App Toolkit** > **Import/recycle translations...**. Click **Add**, navigate to the .xlf or .zip files, and click **Import**.
-
-**Note** The import process performs basic validation before importing. This ensures that the target culture information in the files being imported matches that in the existing .xlf files.
-
-Rebuild your project to cause the translated strings to be copied into the Resources File(s) (.resw) that corresponds to the .xlf file(s) you just imported.
-
-These third party providers offer localization services, and may be able to assist you.
-
-- [Elanex](https://www.strakertranslations.com/)
-- [Keywords Studios](https://www.keywordsstudios.com/)
-- [Lionbridge](https://www.lionbridge.com)
-- [Moravia](https://www.rws.com/what-we-do/rws-moravia/)
-- [SDL](https://www.rws.com/)
-- [Welocalize](https://www.welocalize.com/)
-
-> [!NOTE]
-> The list above is provided for informational purposes only and is not an endorsement. Microsoft does not make any representation or warranty regarding these vendors or their services, and under no circumstances will Microsoft have any liability for your use of such vendors or services. Any questions, complaints, or claims regarding such vendors or their services must be directed to the appropriate vendor.
-
-#### Option 3. Use the integrated translation services
-
-Translation services are integrated into the Visual Studio IDE as well as into the Multilingual Editor. This provides easy access to translation services while developing your product as well as localizing your resources. For this service, you'll need an Azure account subscription, as described in [Microsoft Translator Moves to the Azure portal](/azure/cognitive-services/translator/quickstart-translator).
-
-To access the translation services inside Visual Studio, select and right-click one or more .xlf files in Solution Explorer and click **Generate machine translations**.
-
-The Multilingual Editor provides the same translation support, as well as adding interactive translation suggestions, which enable you to select the translation that best fits your resource strings. After the translation suggestion is provided, you can fine-tune the string for your translation style.
-
-Two providers are shipped with the Multilingual App Toolkit.
-
-- The [Microsoft Language Portal](https://www.microsoft.com/Language/) provider enables translation-recycling and terminology-matching support based on translations of the user interface text for Microsoft products and services.
-- The [Microsoft Translator](https://www.microsofttranslator.com/) provider enables on-demand machine translation services.
-
-You and your translator(s) can manage the status of translations in the Multilingual Editor to review uncertain translations later. You can set the status of each string in the **Properties** tab. Status values are: **New**, **Needs review**, **Translated**, **Final**, and **Signed off**. The indicator at the left of the row shows the status. When all rows show green in the Multilingual Editor, then your translation work is done.
-
-Rebuild your project to cause the translated strings to be copied into the Resources File(s) (.resw) that corresponds to the .xlf file(s) you just edited.
-
-### Step 7. Upload your app to the Microsoft Store
-
-Before you start the Microsoft Store Certification process, you must exclude the `.qps-ploc.xlf` file from your project. Pseudo language is used to detect potential localizability issues or bugs, but it is not a valid Microsoft Store language. If it is not removed then your app will fail during the Microsoft Store Certification process.
-
-## Related topics
-
-- [Localize strings in your UI and app package manifest](/windows/uwp/app-resources/localize-strings-ui-manifest)
-- [Globalization and localization](globalizing-portal.md)
-- [Guidelines for globalization](guidelines-and-checklist-for-globalizing-your-app.md)
-- [Make your app localizable](prepare-your-app-for-localization.md)
-- [BCP-47 language tag](https://tools.ietf.org/html/bcp47)
-
-## Telemetry
-
-The Multilingual App Toolkit Visual Studio (MAT VS) extension collects anonymous usage data and sends it to Microsoft servers to help improve our products and services. Telemetry is off by default and can be enabled or disabled at any time. For more details, see [Multilingual App Toolkit FAQ & troubleshooting](./mat-faq-troubleshooting.yml).
-
-## Downloads
-
-- [Multilingual App Toolkit Visual Studio 2017-2019](https://marketplace.visualstudio.com/items?itemName=MultilingualAppToolkit.MultilingualAppToolkit-18308)
-- [Multilingual App Toolkit Visual Studio 2022+](https://marketplace.visualstudio.com/items?itemName=dts-publisher.mat2022)
-- [Multilingual app toolkit Editor](multilingual-app-toolkit-editor-downloads.md)
-
-## Translation services
-
-- [Microsoft Language Portal](https://www.microsoft.com/Language/)
-- [Microsoft Translator](https://www.microsofttranslator.com/)
diff --git a/hub/apps/design/globalizing/use-patterns-to-format-dates-and-times.md b/hub/apps/design/globalizing/use-patterns-to-format-dates-and-times.md
index 081663a6ab..80d9515860 100644
--- a/hub/apps/design/globalizing/use-patterns-to-format-dates-and-times.md
+++ b/hub/apps/design/globalizing/use-patterns-to-format-dates-and-times.md
@@ -5,7 +5,7 @@ ms.assetid: 012028B3-9DA2-4E72-8C0E-3E06BEC3B3FE
label: Use patterns to format dates and times
template: detail.hbs
ms.date: 11/09/2017
-ms.topic: article
+ms.topic: how-to
keywords: windows 10, uwp, globalization, localizability, localization
ms.localizationpriority: medium
---
@@ -23,7 +23,7 @@ But when you want even more control over the order and format of the components
## The difference between format templates and format patterns
-A format template is a culture-agnostic format string. So, if you construct a **DateTimeFormatter** using a format template, then the formatter displays your format components in the right order for the current language. Conversely, a format pattern is culture-specific. If you construct a **DateTimeFormatter** using a format pattern, then the formatter will use the pattern exactly as given. Consequently, a pattern isn't necesssarily valid across cultures.
+A format template is a culture-agnostic format string. So, if you construct a **DateTimeFormatter** using a format template, then the formatter displays your format components in the right order for the current language. Conversely, a format pattern is culture-specific. If you construct a **DateTimeFormatter** using a format pattern, then the formatter will use the pattern exactly as given. Consequently, a pattern isn't necessarily valid across cultures.
Let's illustrate this distinction with an example. We'll pass a simple format template (not a pattern) to the **DateTimeFormatter** constructor. This is the format template "month day".
diff --git a/hub/apps/design/globalizing/use-utf8-code-page.md b/hub/apps/design/globalizing/use-utf8-code-page.md
index 061ef392f6..7181392ae6 100644
--- a/hub/apps/design/globalizing/use-utf8-code-page.md
+++ b/hub/apps/design/globalizing/use-utf8-code-page.md
@@ -1,28 +1,27 @@
---
title: Use UTF-8 code pages in Windows apps
description: How to use UTF code pages in Windows apps.
-ms.date: 06/21/2023
-ms.topic: article
-ms.custom: seo-windows-dev
+ms.date: 07/17/2025
+ms.topic: how-to
---
# Use UTF-8 code pages in Windows apps
-Use [UTF-8](http://www.utf-8.com/) character encoding for optimal compatibility between web apps and other \*nix-based platforms (Unix, Linux, and variants), minimize localization bugs, and reduce testing overhead.
+Use Unicode Transformation Format 8-bit ([UTF-8](http://www.utf-8.com/)) character encoding to maximize compatibility between web apps and other *nix-based platforms (Unix, Linux, and variants), minimize localization bugs, and reduce testing overhead.
-UTF-8 is the universal code page for internationalization and is able to encode the entire Unicode character set. It is used pervasively on the web, and is the default for *nix-based platforms.
+UTF-8 is the universal code page for internationalization and is able to encode the entire Unicode character set. It is used extensively on the web and is the default encoding for both XML and *nix-based platforms.
## Set a process code page to UTF-8
-As of Windows Version 1903 (May 2019 Update), you can use the ActiveCodePage property in the appxmanifest for packaged apps, or the fusion manifest for unpackaged apps, to force a process to use UTF-8 as the process code page.
+As of Windows Version 1903 (May 2019 Update), you can specify the [activeCodePage](/windows/win32/sbscs/application-manifests#activecodepage) property in the appxmanifest for packaged apps (or the fusion manifest for unpackaged apps) to force a process to use UTF-8 as the process code page.
> [!NOTE]
-> GDI doesn't currently support setting the ActiveCodePage property per process. Instead, GDI defaults to the active system codepage. To configure your app to render UTF-8 text via GDI, go to Windows **Settings** > **Time \& language** > **Language \& region** > **Administrative language settings** > **Change system locale**, and check **Beta: Use Unicode UTF-8 for worldwide language support**. Then reboot the PC for the change to take effect.
+> Windows graphics device interface (GDI) doesn't currently support setting the activeCodePage property per process. Instead, GDI defaults to the active system codepage. To configure your app to render UTF-8 text via GDI, go to Windows **Settings** > **Time \& language** > **Language \& region** > **Administrative language settings** > **Change system locale**, and check **Beta: Use Unicode UTF-8 for worldwide language support**. Then reboot the PC for the change to take effect.
-You can declare the ActiveCodePage property, and target/run on earlier Windows builds, but you must handle legacy code page detection and conversion as usual. With a minimum target version of Windows Version 1903, the process code page will always be UTF-8, so legacy code page detection and conversion can be avoided.
+You can declare the activeCodePage property, and target/run on earlier Windows builds, but you must handle legacy code page detection and conversion as usual. With a minimum target version of Windows Version 1903, the process code page will always be UTF-8, so legacy code page detection and conversion can be avoided.
> [!NOTE]
-> An encoded character takes between 1 and 4 bytes. UTF-8 encoding supports longer byte sequences, up to 6 bytes, but the biggest code point of Unicode 6.0 (U+10FFFF) only takes 4 bytes.
+> In UTF-8, an encoded character is represented by a sequence of 1 to 4 bytes. (See [definition D92 in Chapter 3](https://www.unicode.org/versions/Unicode16.0.0/core-spec/chapter-3/#G27817) of [The Unicode Standard](https://www.unicode.org/versions/latest/) for the formal specification.)
## Examples
@@ -40,7 +39,7 @@ You can declare the ActiveCodePage property, and target/run on earlier Windows b
- UTF-8
+ UTF-8
@@ -81,7 +80,7 @@ Because Windows operates natively in UTF-16 (`WCHAR`), you might need to convert
Use `dwFlags` of either `0` or `MB_ERR_INVALID_CHARS` when using these functions with `CodePage` set to `CP_UTF8` (otherwise an `ERROR_INVALID_FLAGS` occurs).
> [!NOTE]
-> `CP_ACP` equates to `CP_UTF8` only if running on Windows Version 1903 (May 2019 Update) or above and the ActiveCodePage property described above is set to UTF-8. Otherwise, it honors the legacy system code page. We recommend using `CP_UTF8` explicitly.
+> `CP_ACP` equates to `CP_UTF8` only if running on Windows Version 1903 (May 2019 Update) or above and the activeCodePage property described above is set to UTF-8. Otherwise, it honors the legacy system code page. We recommend using `CP_UTF8` explicitly.
## Related topics
diff --git a/hub/apps/design/guidelines-overview.md b/hub/apps/design/guidelines-overview.md
new file mode 100644
index 0000000000..857cc4363d
--- /dev/null
+++ b/hub/apps/design/guidelines-overview.md
@@ -0,0 +1,99 @@
+---
+description: Deep-dive topics like layout, navigation, input, typography, and motion. Everything you need to build a solid UX foundation for your Windows app.
+title: Design guidelines
+ms.date: 12/16/2025
+ms.topic: article
+ms.localizationpriority: medium
+---
+
+# Design guidelines
+
+The Guidelines section covers the core building blocks of Windows app design. These topics define the patterns, rules, and behaviors that ensure your app feels intuitive, polished, and aligned with Fluent Design. From color and typography to motion, layout, and materials, each foundation helps you make consistent decisions that scale across pages, features, and form factors.
+
+Use these fundamentals as a guide throughout your design process—whether you're mapping out your first screens, refining interaction patterns, or ensuring your UI matches Windows conventions. Exploring these foundations early can save development time, reduce rework, and lead to better experiences for your users.
+
+---
+
+:::row:::
+ :::column:::
+ [](./signature-experiences/color.md)
+ **[Color](./signature-experiences/color.md)**
+ Use color to establish hierarchy, communicate meaning, and create a cohesive visual identity..
+ :::column-end:::
+ :::column:::
+ [](./basics/commanding-basics.md)
+ **[Commanding](./basics/commanding-basics.md)**
+ Present actions in clear, consistent patterns that help users understand what they can do.
+ :::column-end:::
+ :::column:::
+ [](./signature-experiences/layering.md)
+ **[Elevation](./signature-experiences/layering.md)**
+ Apply depth and layering to guide focus and reinforce the structure of your interface.
+ :::column-end:::
+:::row-end:::
+
+:::row:::
+ :::column:::
+ [](./signature-experiences/geometry.md)
+ **[Geometry](./signature-experiences/geometry.md)**
+ Use shape, sizing, and spatial relationships to create balanced, predictable layouts.
+ :::column-end:::
+ :::column:::
+ [](./signature-experiences/iconography.md)
+ **[Iconography](./signature-experiences/iconography.md)**
+ Communicate actions and concepts quickly with familiar, purposeful icons.
+ :::column-end:::
+ :::column:::
+ [](layout/index.md)
+ **[Layout](./layout/index.md)**
+ Organize content with grids, spacing, and alignment patterns that improve clarity and flow.
+ :::column-end:::
+:::row-end:::
+
+:::row:::
+ :::column:::
+ [](./signature-experiences/materials.md)
+ **[Materials](./signature-experiences/materials.md)**
+ Enhance your UI with Fluent materials like Mica and Acrylic to add depth and warmth.
+ :::column-end:::
+ :::column:::
+ [](./signature-experiences/motion.md)
+ **[Motion](./signature-experiences/motion.md)**
+ Use motion to provide feedback, guide attention, and create smooth, responsive interactions.
+ :::column-end:::
+ :::column:::
+ [](./basics/navigation-basics.md)
+ **[Navigation](./basics/navigation-basics.md)**
+ Help users move through your app with predictable, well-structured navigation patterns.
+ :::column-end:::
+:::row-end:::
+:::row:::
+ :::column:::
+ [](./style/sound.md)
+ **[Sound](./style/sound.md)**
+ Use audio cues to provide feedback, reinforce actions, and support accessibility.
+ :::column-end:::
+ :::column:::
+ [](./signature-experiences/typography.md)
+ **[Typography](./signature-experiences/typography.md)**
+ Set the tone and improve readability with consistent type choices and hierarchy.
+ :::column-end:::
+ :::column:::
+ [](./usability/index.md)
+ **[Usability](./usability/index.md)**
+ Ensure your app is easy to use through intuitive interactions, clear affordances, and accessibility.
+ :::column-end:::
+:::row-end:::
+
+:::row:::
+ :::column:::
+ [](./widgets/index.md)
+ **[Widgets](./widgets/index.md)**
+ Extend your app with glanceable, interactive surfaces that surface key information and actions.
+ :::column-end:::
+ :::column:::
+ [](style/writing-style.md )
+ **[Writing](./style/writing-style.md )**
+ Use clear, concise, and helpful language to improve understanding and reduce cognitive load.
+ :::column-end:::
+:::row-end:::
\ No newline at end of file
diff --git a/hub/apps/design/images/header-design.png b/hub/apps/design/images/header-design.png
new file mode 100644
index 0000000000..383358206b
Binary files /dev/null and b/hub/apps/design/images/header-design.png differ
diff --git a/hub/apps/design/images/tile-color.png b/hub/apps/design/images/tile-color.png
new file mode 100644
index 0000000000..1bb3222f9a
Binary files /dev/null and b/hub/apps/design/images/tile-color.png differ
diff --git a/hub/apps/design/images/tile-commanding.png b/hub/apps/design/images/tile-commanding.png
new file mode 100644
index 0000000000..d8bbffe076
Binary files /dev/null and b/hub/apps/design/images/tile-commanding.png differ
diff --git a/hub/apps/design/images/tile-design-principles.png b/hub/apps/design/images/tile-design-principles.png
new file mode 100644
index 0000000000..3581b6f443
Binary files /dev/null and b/hub/apps/design/images/tile-design-principles.png differ
diff --git a/hub/apps/design/images/tile-design-toolkits.png b/hub/apps/design/images/tile-design-toolkits.png
new file mode 100644
index 0000000000..2d90f5f4d4
Binary files /dev/null and b/hub/apps/design/images/tile-design-toolkits.png differ
diff --git a/hub/apps/design/images/tile-elevation.png b/hub/apps/design/images/tile-elevation.png
new file mode 100644
index 0000000000..264ccd2c54
Binary files /dev/null and b/hub/apps/design/images/tile-elevation.png differ
diff --git a/hub/apps/design/images/tile-foundations.png b/hub/apps/design/images/tile-foundations.png
new file mode 100644
index 0000000000..a3ae54bdbf
Binary files /dev/null and b/hub/apps/design/images/tile-foundations.png differ
diff --git a/hub/apps/design/images/tile-geometry.png b/hub/apps/design/images/tile-geometry.png
new file mode 100644
index 0000000000..11e0bf7c13
Binary files /dev/null and b/hub/apps/design/images/tile-geometry.png differ
diff --git a/hub/apps/design/images/tile-hierarchy.png b/hub/apps/design/images/tile-hierarchy.png
new file mode 100644
index 0000000000..fc57712df2
Binary files /dev/null and b/hub/apps/design/images/tile-hierarchy.png differ
diff --git a/hub/apps/design/images/tile-iconography.png b/hub/apps/design/images/tile-iconography.png
new file mode 100644
index 0000000000..d8f8986a9e
Binary files /dev/null and b/hub/apps/design/images/tile-iconography.png differ
diff --git a/hub/apps/design/images/tile-layout.png b/hub/apps/design/images/tile-layout.png
new file mode 100644
index 0000000000..2dbcc04710
Binary files /dev/null and b/hub/apps/design/images/tile-layout.png differ
diff --git a/hub/apps/design/images/tile-materials.png b/hub/apps/design/images/tile-materials.png
new file mode 100644
index 0000000000..b71bbf66ba
Binary files /dev/null and b/hub/apps/design/images/tile-materials.png differ
diff --git a/hub/apps/design/images/tile-motion.png b/hub/apps/design/images/tile-motion.png
new file mode 100644
index 0000000000..1c5d5bab7b
Binary files /dev/null and b/hub/apps/design/images/tile-motion.png differ
diff --git a/hub/apps/design/images/tile-navigation.png b/hub/apps/design/images/tile-navigation.png
new file mode 100644
index 0000000000..4befd68f0b
Binary files /dev/null and b/hub/apps/design/images/tile-navigation.png differ
diff --git a/hub/apps/design/images/tile-sound.png b/hub/apps/design/images/tile-sound.png
new file mode 100644
index 0000000000..9cd5a2eae1
Binary files /dev/null and b/hub/apps/design/images/tile-sound.png differ
diff --git a/hub/apps/design/images/tile-typography.png b/hub/apps/design/images/tile-typography.png
new file mode 100644
index 0000000000..60aeeeb8dc
Binary files /dev/null and b/hub/apps/design/images/tile-typography.png differ
diff --git a/hub/apps/design/images/tile-usability.png b/hub/apps/design/images/tile-usability.png
new file mode 100644
index 0000000000..916a495554
Binary files /dev/null and b/hub/apps/design/images/tile-usability.png differ
diff --git a/hub/apps/design/images/tile-widgets.png b/hub/apps/design/images/tile-widgets.png
new file mode 100644
index 0000000000..ee8c1cf23d
Binary files /dev/null and b/hub/apps/design/images/tile-widgets.png differ
diff --git a/hub/apps/design/images/tile-writing.png b/hub/apps/design/images/tile-writing.png
new file mode 100644
index 0000000000..92ba41be11
Binary files /dev/null and b/hub/apps/design/images/tile-writing.png differ
diff --git a/hub/apps/design/in-app-help/in-app-help.md b/hub/apps/design/in-app-help/in-app-help.md
index 49e6b4654a..0eb22a9019 100644
--- a/hub/apps/design/in-app-help/in-app-help.md
+++ b/hub/apps/design/in-app-help/in-app-help.md
@@ -36,7 +36,7 @@ Having a separate page or pages of help within your app is a quick and easy way
#### Popups
-Popups allow for highly contexual help, displaying instructions and advice that is relevant to the specific task that the user is attempting.
+Popups allow for highly contextual help, displaying instructions and advice that is relevant to the specific task that the user is attempting.
- **Focus on one issue:** Space is even more restricted in a popup than a help page. Help popups needs to refer specifically a single task to be effective.
- **Visibility is important:** Because help popups can only be viewed from one location, make sure that they're clearly visible to the user without being obstructive. If the user misses it, they might move away from the popup in search of a help page.
diff --git a/hub/apps/design/in-app-help/instructional-ui.md b/hub/apps/design/in-app-help/instructional-ui.md
index e79976832a..e19fa70412 100644
--- a/hub/apps/design/in-app-help/instructional-ui.md
+++ b/hub/apps/design/in-app-help/instructional-ui.md
@@ -8,6 +8,7 @@ ms.topic: article
keywords: windows 10, uwp
ms.assetid: c87e2f06-339d-4413-b585-172752964f56
ms.localizationpriority: medium
+ms.custom: sfi-image-nochange
---
# Instructional UI guidelines
@@ -41,7 +42,7 @@ Avoid inconveniencing the user with your instructional UI. Do not:
- **Obscure important information:** Instructional UI should never get in the way of other features of your app.
- **Force users to participate:** Users should be able to ignore instructional UI and still progress through the app.
-- **Displaying repeat information:** Don't harass the user with instructional UI, even if they ignore it the first time. Adding an setting to display instructional UI again is a better solution.
+- **Displaying repeat information:** Don't harass the user with instructional UI, even if they ignore it the first time. Adding a setting to display instructional UI again is a better solution.
## Examples of instructional UI
diff --git a/hub/apps/design/index.md b/hub/apps/design/index.md
index 765ace40f7..ca6182b456 100644
--- a/hub/apps/design/index.md
+++ b/hub/apps/design/index.md
@@ -1,76 +1,23 @@
---
-description: Design guidelines and UI code examples for creating Windows app experiences.
-title: Design and code Windows apps
-ms.date: 01/28/2022
+description: Design guidelines and UI examples for creating Windows app experiences.
+title: Design Windows apps overview
+ms.date: 10/28/2024
ms.topic: article
ms.localizationpriority: medium
---
-# Design and code Windows apps
+# Design Windows apps overview
-Design guidelines and UI code examples for creating Windows app experiences.
+:::image type="content" source="images/header-design.png" alt-text="A stylized blue brush and shapes representing design tools against a light gradient background" border="false":::
-:::row:::
- :::column:::
- ### [Design downloads](downloads/index.md)
- :::image type="content" source="images/downloads-1x.png" alt-text="Design downloads" link="/windows/apps/design/downloads/":::
- Get design toolkits and samples.
- :::column-end:::
- :::column:::
- ### [Design basics](basics/index.md)
- :::image type="content" source="images/basics-1x.png" alt-text="Design basics" link="/windows/apps/design/basics/":::
- An introduction to app design and the Fluent Design System.
- :::column-end:::
-:::row-end:::
+---
+
+Designing a great Windows app starts with a solid understanding of how users expect apps to look, feel, and behave. This hub brings together the core guidance, patterns, and resources needed to create intuitive, accessible, and delightful experiences on Windows leveraging Microsoft's [Fluent Design language](https://fluent2.microsoft.design/).
-:::row:::
- :::column:::
- ### [Layout](layout/index.md)
- :::image type="content" source="images/layout-1x.png" alt-text="Layout" link="/windows/apps/design/layout/":::
- Responsive tips and APIs for a UI that looks great on every screen size.
- :::column-end:::
- :::column:::
- ### [Controls and patterns](controls/index.md)
- :::image type="content" source="images/controls-1x.png" alt-text="Controls and patterns" link="/windows/apps/design/controls/":::
- All the UI building blocks you need, from radio buttons to navigation controls.
- :::column-end:::
-:::row-end:::
+Whether you're building a new app or refining an existing one, you'll find practical principles, UI foundations, and ready-to-use tools to help you craft consistent interfaces that work seamlessly across devices, input types, and form factors.
-:::row:::
- :::column:::
- ### [Style](style/index.md)
- :::image type="content" source="images/style-1x.png" alt-text="Style" link="/windows/apps/design/style/":::
- Make your app stand out with color, typography, and acrylic.
- :::column-end:::
- :::column:::
- ### [Motion](motion/index.md)
- :::image type="content" source="images/motion-1x.png" alt-text="Motion" link="/windows/apps/design/motion/":::
- Bring your app to life with animations and transitions.
- :::column-end:::
-:::row-end:::
+---
-:::row:::
- :::column:::
- ### [Shell](shell/index.md)
- :::image type="content" source="images/shell-1x.png" alt-text="Shell" link="/windows/apps/design/shell/":::
- Use Windows shell features to launch your app and display notifications.
- :::column-end:::
- :::column:::
- ### [Input and interactions](input/index.md)
- :::image type="content" source="images/inputs-1x.png" alt-text="Input and interactions" link="/windows/apps/design/input/":::
- Optimize your app for touch, pen, Surface dial, and other input types.
- :::column-end:::
-:::row-end:::
+#### Get started with designing your Windows app
-:::row:::
- :::column:::
- ### [Devices](devices/index.md)
- :::image type="content" source="images/devices-1x.png" alt-text="Devices" link="/windows/apps/design/devices/":::
- Learn about the spectrum of Windows 10 and Windows 11 devices and how to optimize for them.
- :::column-end:::
- :::column:::
- ### [Usability](usability/index.md)
- :::image type="content" source="images/usability-1x.png" alt-text="Usability" link="/windows/apps/design/usability/":::
- Make your app inclusive and accessible to people around the world.
- :::column-end:::
-:::row-end:::
+[!INCLUDE [apps-design-overview](../../includes/apps-design-overview.md)]
\ No newline at end of file
diff --git a/hub/apps/design/input/cortana-deep-link-into-your-app.md b/hub/apps/design/input/cortana-deep-link-into-your-app.md
deleted file mode 100644
index e6e939fd6a..0000000000
--- a/hub/apps/design/input/cortana-deep-link-into-your-app.md
+++ /dev/null
@@ -1,260 +0,0 @@
----
-title: Deep link from a background app in Cortana to a foreground app - Cortana UWP design and development
-description: Provide deep links from a background app in **Cortana** that launch the app to the foreground in a specific state or context.
-ms.assetid: 6fe5fcc5-9ee4-4c04-92f4-7b1bf7ef5651
-ms.date: 01/28/2021
-ms.topic: article
-keywords: cortana
----
-
-# Deep link from a background app in Cortana to a foreground app
-
->[!WARNING]
-> This feature is no longer supported as of the Windows 10 May 2020 Update (version 2004, codename "20H1").
->
-> See [Cortana in Microsoft 365](/microsoft-365/admin/misc/cortana-integration) for how Cortana is transforming modern productivity experiences.
-
-Provide deep links from a background app in **Cortana** that launch the app to the foreground in a specific state or context.
-
-> [!NOTE]
-> Both **Cortana** and the background app service are terminated when the foreground app is launched.
-
-A deep link is displayed by default on the **Cortana** completion screen as shown here ("Go to AdventureWorks"), but you can display deep links on various other screens.
-
-:::image type="content" source="images/cortana/cortana-completion-screen-upcomingtrip-small.png" alt-text="Screenshot of Cortana background app completion for an upcoming trip":::
-
-> [!NOTE]
-> **Important APIs**
->
-> - [**Windows.ApplicationModel.VoiceCommands**](/uwp/api/Windows.ApplicationModel.VoiceCommands)
-> - [**VCD elements and attributes v1.2**](/uwp/schemas/voicecommands/voice-command-elements-and-attributes-1-2)
-
-## Overview
-
-Users can access your app through **Cortana** by:
-
-- Activating it as a foreground app (see [Activate a foreground app with voice commands through Cortana](cortana-launch-a-foreground-app-with-voice-commands.md)).
-- Exposing specific functionality as a background app service (see [Activate a background app in Cortana using voice commands](cortana-launch-a-background-app-with-voice-commands.md)).
-- Deep linking to specific pages, content, and state or context.
-
-We discuss deep linking here.
-
-Deep linking is useful when Cortana and your app service act as a gateway to your full-featured app (instead of requiring the user to launch the app through the Start menu), or for providing access to richer detail and functionality within your app that is not possible through Cortana. Deep linking is another way to increase usability and promote your app.
-
-There are three ways to provide deep links:
-
-- A "Go to <app>" link on various **Cortana** screens.
-- A link embedded in a content tile on various **Cortana** screens.
-- Programmatically launching the foreground app from the background app service.
-
-## "Go to <app>" deep link
-
-**Cortana** displays a "Go to <app>" deep link below the content card on most screens.
-
-:::image type="content" source="images/cortana/cortana-completion-screen.png" alt-text="Screenshot of the Cortana 'Go to app' deep link on a background app completion screen.":::
-
-You can provide a launch argument for this link that opens your app in similar context as the app service. If you don't provide a launch argument, the app is launched to the main screen.
-
-In this example from AdventureWorksVoiceCommandService.cs of the **AdventureWorks** sample, we pass the specified destination (`destination`) string to the SendCompletionMessageForDestination method, which retrieves all matching trips and provides a deep link to the app.
-
-First, we create a [**VoiceCommandUserMessage**](/uwp/api/Windows.ApplicationModel.VoiceCommands.VoiceCommandUserMessage) (```userMessage```) that is spoken by **Cortana** and shown on the **Cortana** canvas. A [**VoiceCommandContentTile**](/uwp/api/Windows.ApplicationModel.VoiceCommands.VoiceCommandContentTile) list object is then created for displaying the collection of result cards on the canvas.
-
-These two objects are then passed to the [CreateResponse](/uwp/api/Windows.ApplicationModel.VoiceCommands.VoiceCommandResponse) method of the [**VoiceCommandResponse**](/uwp/api/Windows.ApplicationModel.VoiceCommands.VoiceCommandResponse) object (`response`). We then set the [**AppLaunchArgument**](/uwp/api/Windows.ApplicationModel.VoiceCommands.VoiceCommandResponse) property value of the response object to the value of `destination` passsed to this function. When a user taps a content tile on the Cortana canvas, the parameter values are passed to the app through the response object.
-
-Finally, we call the [**ReportSuccessAsync**](/uwp/api/Windows.ApplicationModel.VoiceCommands.VoiceCommandServiceConnection) method of the [**VoiceCommandServiceConnection**](/uwp/api/Windows.ApplicationModel.VoiceCommands.VoiceCommandServiceConnection).
-
-```csharp
-///
-/// Show details for a single trip, if the trip can be found.
-/// This demonstrates a simple response flow in Cortana.
-///
-/// The destination specified in the voice command.
-private async Task SendCompletionMessageForDestination(string destination)
-{
-...
- IEnumerable trips = store.Trips.Where(p => p.Destination == destination);
-
- var userMessage = new VoiceCommandUserMessage();
- var destinationsContentTiles = new List();
-...
- var response = VoiceCommandResponse.CreateResponse(userMessage, destinationsContentTiles);
-
- if (trips.Count() > 0)
- {
- response.AppLaunchArgument = destination;
- }
-
- await voiceServiceConnection.ReportSuccessAsync(response);
-}
-```
-
-## Content tile deep link
-
-You can add deep links to content cards on various **Cortana** screens.
-
-:::image type="content" source="images/cortana/cortana-backgroundapp-progress-result.png" alt-text="Screenshot of the Cortana canvas for end to end Cortana background app flow using AdventureWorks upcoming trip with handoff":::*AdventureWorks "Upcoming trip" with handoff screen*
-
-Like the "Go to <app>" links, you can provide a launch argument to open your app with similar context as the app service. If you don't provide a launch argument, the content tile does not link to your app.
-
-In this example from AdventureWorksVoiceCommandService.cs of the **AdventureWorks** sample, we pass the specified destination to the SendCompletionMessageForDestination method, which retrieves all matching trips and provides content cards with deep links to the app.
-
-First, we create a [**VoiceCommandUserMessage**](/uwp/api/Windows.ApplicationModel.VoiceCommands.VoiceCommandUserMessage) (```userMessage```) that is spoken by **Cortana** and shown on the **Cortana** canvas. A [**VoiceCommandContentTile**](/uwp/api/Windows.ApplicationModel.VoiceCommands.VoiceCommandContentTile) list object is then created for displaying the collection of result cards on the canvas.
-
-These two objects are then passed to the [CreateResponse](/uwp/api/Windows.ApplicationModel.VoiceCommands.VoiceCommandResponse) method of the [**VoiceCommandResponse**](/uwp/api/Windows.ApplicationModel.VoiceCommands.VoiceCommandResponse) object (```response```). We then set the [**AppLaunchArgument**](/uwp/api/Windows.ApplicationModel.VoiceCommands.VoiceCommandResponse) property value to the value of the destination in the voice command.
-
-Finally, we call the [**ReportSuccessAsync**](/uwp/api/Windows.ApplicationModel.VoiceCommands.VoiceCommandServiceConnection) method of the [**VoiceCommandServiceConnection**](/uwp/api/Windows.ApplicationModel.VoiceCommands.VoiceCommandServiceConnection).
-Here, we add two content tiles with different [**AppLaunchArgument**](/uwp/api/Windows.ApplicationModel.VoiceCommands.VoiceCommandResponse) parameter values to a [**VoiceCommandContentTile**](/uwp/api/Windows.ApplicationModel.VoiceCommands.VoiceCommandContentTile) list used in the [**ReportSuccessAsync**](/uwp/api/Windows.ApplicationModel.VoiceCommands.VoiceCommandServiceConnection) call of the [**VoiceCommandServiceConnection**](/uwp/api/Windows.ApplicationModel.VoiceCommands.VoiceCommandServiceConnection) object.
-
-```csharp
-///
-/// Show details for a single trip, if the trip can be found.
-/// This demonstrates a simple response flow in Cortana.
-///
-/// The destination specified in the voice command.
-private async Task SendCompletionMessageForDestination(string destination)
-{
- // If this operation is expected to take longer than 0.5 seconds, the task must
- // supply a progress response to Cortana before starting the operation, and
- // updates must be provided at least every 5 seconds.
- string loadingTripToDestination = string.Format(
- cortanaResourceMap.GetValue("LoadingTripToDestination", cortanaContext).ValueAsString,
- destination);
- await ShowProgressScreen(loadingTripToDestination);
- Model.TripStore store = new Model.TripStore();
- await store.LoadTrips();
-
- // Query for the specified trip.
- // The destination should be in the phrase list. However, there might be
- // multiple trips to the destination. We pick the first.
- IEnumerable trips = store.Trips.Where(p => p.Destination == destination);
-
- var userMessage = new VoiceCommandUserMessage();
- var destinationsContentTiles = new List();
- if (trips.Count() == 0)
- {
- string foundNoTripToDestination = string.Format(
- cortanaResourceMap.GetValue("FoundNoTripToDestination", cortanaContext).ValueAsString,
- destination);
- userMessage.DisplayMessage = foundNoTripToDestination;
- userMessage.SpokenMessage = foundNoTripToDestination;
- }
- else
- {
- // Set plural or singular title.
- string message = "";
- if (trips.Count() > 1)
- {
- message = cortanaResourceMap.GetValue("PluralUpcomingTrips", cortanaContext).ValueAsString;
- }
- else
- {
- message = cortanaResourceMap.GetValue("SingularUpcomingTrip", cortanaContext).ValueAsString;
- }
- userMessage.DisplayMessage = message;
- userMessage.SpokenMessage = message;
-
- // Define a tile for each destination.
- foreach (Model.Trip trip in trips)
- {
- int i = 1;
-
- var destinationTile = new VoiceCommandContentTile();
-
- destinationTile.ContentTileType = VoiceCommandContentTileType.TitleWith68x68IconAndText;
- destinationTile.Image = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///AdventureWorks.VoiceCommands/Images/GreyTile.png"));
-
- destinationTile.AppLaunchArgument = trip.Destination;
- destinationTile.Title = trip.Destination;
- if (trip.StartDate != null)
- {
- destinationTile.TextLine1 = trip.StartDate.Value.ToString(dateFormatInfo.LongDatePattern);
- }
- else
- {
- destinationTile.TextLine1 = trip.Destination + " " + i;
- }
-
- destinationsContentTiles.Add(destinationTile);
- i++;
- }
- }
-
- var response = VoiceCommandResponse.CreateResponse(userMessage, destinationsContentTiles);
-
- if (trips.Count() > 0)
- {
- response.AppLaunchArgument = destination;
- }
-
- await voiceServiceConnection.ReportSuccessAsync(response);
-}
-```
-
-## Programmatic deep link
-
-You can also programmatically launch your app with a launch argument to open your app with similar context as the app service. If you don't provide a launch argument, the app is launched to the main screen.
-
-Here, we add an [**AppLaunchArgument**](/uwp/api/Windows.ApplicationModel.VoiceCommands.VoiceCommandResponse) parameter with a value of "Las Vegas" to a [**VoiceCommandResponse**](/uwp/api/Windows.ApplicationModel.VoiceCommands.VoiceCommandResponse) object used in the [**RequestAppLaunchAsync**](/uwp/api/Windows.ApplicationModel.VoiceCommands.VoiceCommandServiceConnection) call of the [**VoiceCommandServiceConnection**](/uwp/api/Windows.ApplicationModel.VoiceCommands.VoiceCommandServiceConnection) object.
-
-```CSharp
-var userMessage = new VoiceCommandUserMessage();
-userMessage.DisplayMessage = "Here are your trips.";
-userMessage.SpokenMessage =
- "You have one trip to Vegas coming up.";
-
-response = VoiceCommandResponse.CreateResponse(userMessage);
-response.AppLaunchArgument = “Las Vegas”;
-await VoiceCommandServiceConnection.RequestAppLaunchAsync(response);
-```
-
-## App manifest
-
-To enable deep linking to your app, you must declare the `windows.personalAssistantLaunch` extension in the Package.appxmanifest file of your app project.
-
-Here, we declare the `windows.personalAssistantLaunch` extension for the **Adventure Works** app.
-
-```XML
-
-
-
-
-
-
-```
-
-## Protocol contract
-
-Your app is launched to the foreground through Uniform Resource Identifier (URI) activation using a [**Protocol**](/uwp/api/Windows.ApplicationModel.Activation.ActivationKind) contract. Your app must override your app's [**OnActivated**](/uwp/api/Windows.UI.Xaml.Application) event and check for an **ActivationKind** of **Protocol**. For more info, see [Handle URI activation](/windows/uwp/launch-resume/handle-uri-activation).
-
-Here, we decode the URI provided by the [**ProtocolActivatedEventArgs**](/uwp/api/Windows.ApplicationModel.Activation.ProtocolActivatedEventArgs) to access the launch argument. For this example, the [**Uri**](/uwp/api/Windows.ApplicationModel.Activation.ProtocolActivatedEventArgs) is set to "windows.personalassistantlaunch:?LaunchContext=Las Vegas".
-
-```CSharp
-if (args.Kind == ActivationKind.Protocol)
- {
- var commandArgs = args as ProtocolActivatedEventArgs;
- Windows.Foundation.WwwFormUrlDecoder decoder =
- new Windows.Foundation.WwwFormUrlDecoder(commandArgs.Uri.Query);
- var destination = decoder.GetFirstValueByName("LaunchContext");
-
- navigationCommand = new ViewModel.TripVoiceCommand(
- "protocolLaunch",
- "text",
- "destination",
- destination);
-
- navigationToPageType = typeof(View.TripDetails);
-
- rootFrame.Navigate(navigationToPageType, navigationCommand);
-
- // Ensure the current window is active.
- Window.Current.Activate();
- }
-```
-
-## Related articles
-
-- [Cortana interactions in Windows apps](cortana-interactions.md)
-- [Cortana design guidelines](cortana-design-guidelines.md)
-- [VCD elements and attributes v1.2](/uwp/schemas/voicecommands/voice-command-elements-and-attributes-1-2)
-- [Cortana voice command sample](https://go.microsoft.com/fwlink/p/?LinkID=619899)
diff --git a/hub/apps/design/input/cortana-design-guidelines.md b/hub/apps/design/input/cortana-design-guidelines.md
deleted file mode 100644
index 1b068074de..0000000000
--- a/hub/apps/design/input/cortana-design-guidelines.md
+++ /dev/null
@@ -1,352 +0,0 @@
----
-title: Cortana design guidelines - Cortana UWP design and development
-description: These guidelines and recommendations describe how your app can use Cortana to interact with the user.
-ms.assetid: 332ccb95-0e56-410e-ab63-cc028fce4192
-label: Cortana
-template: detail.hbs
-ms.date: 01/27/2021
-ms.topic: article
-keywords: cortana, design
-ms.localizationpriority: medium
----
-
-# Cortana design guidelines
-
->[!WARNING]
-> This feature is no longer supported as of the Windows 10 May 2020 Update (version 2004, codename "20H1").
->
-> See [Cortana in Microsoft 365](/microsoft-365/admin/misc/cortana-integration) for how Cortana is transforming modern productivity experiences.
-
-These guidelines and recommendations describe how your app can best use **Cortana** to interact with the user, help them accomplish a task, and communicate clearly how it's all happening.
-
-**Cortana** enables applications running in the background to prompt the user for confirmation or disambiguation, and in return provide the user with feedback on the status of the voice command. The process is lightweight, quick, and doesn’t force the user to leave the **Cortana** experience or switch context to the application.
-
-While the user should feel that **Cortana** is helping to make the process as light and easy as possible, you probably want **Cortana** to also be explicit that it's your app accomplishing the task.
-
-We use a trip planning and management app named **Adventure Works** integrated into the **Cortana** UI, shown here, to demonstrate many of the concepts and features we discuss. For more info, see the [Cortana voice command sample](https://go.microsoft.com/fwlink/p/?LinkID=619899).
-
-:::image type="content" source="images/cortana/cortana-overview.png" alt-text="Screenshot of the Cortana canvas":::
-
-## Conversational writing
-
-Successful **Cortana** interactions require you to follow some fundamental principles when crafting text-to-speech (TTS) and GUI strings.
-
-
-
-
-
-
-
-
-
-
Principle
-
Bad example
-
Good example
-
-
-
-
-
-
-
Efficient
-
Use as few words as possible and put the most important information up front.
-
-
-
Sure can do, what movie would you like to search for today? We have a large collection.
-
Sure, what movie are you looking for?
-
-
-
-
-
Relevant
-
Provide information pertinent only to the task, content, and context.
-
-
-
I’ve added this to your playlist. Just so you know, your battery is getting low.
-
I’ve added this to your playlist.
-
-
-
-
-
Clear
-
Avoid ambiguity. Use everyday language instead of technical jargon.
-
-
-
No results for query "Trips to Las Vegas".
-
I couldn’t find any trips to Las Vegas.
-
-
-
-
-
Trustworthy
-
Be as accurate as possible. Be transparent about what’s going on in the background—if a task hasn’t finished yet, don’t say that it has. Respect privacy—don’t read private information out loud.
-
-
-
I couldn’t find that movie, it must not have been released yet.
-
I couldn’t find that movie in our catalogue.
-
-
-
-
-Write how people speak. Don’t emphasize grammatical accuracy over sounding natural. For example, ear-friendly verbal shortcuts like "wanna" or "gotta" are fine for TTS read out.
-
-Use the implied first-person tense where possible and natural. For example, "Looking for your next Adventure Works trip" implies that someone is doing the looking, but does not use the word "I" to specify.
-
-Use some variation to help make your app sound more natural. Provide different versions of your TTS and GUI strings to effectively say the same thing. For example, "What movie do you wanna see?" could have alternatives like "What movie would you like to watch?". People don’t say the same thing the exact same way every time. Just make sure to keep your TTS and GUI versions in sync.
-
-Use phrases like "OK" and "Alright" in your responses judiciously. While they can provide acknowledgment and a sense of progress, they can also get repetitive if used too often and without variation.
-
-> [!NOTE]
-> Use acknowledgment phrases in TTS only. Due to the limited space on the **Cortana** canvas, don't repeat them in the corresponding GUI strings.
-
-Use contractions in your responses for more natural interactions and additional space saving on the **Cortana** canvas. For example," I can’t find that movie" instead of "I was unable to find that movie". Write for the ear, not the eye.
-
-Use language that the system understands. Users tend to repeat the terms they are presented with. Know what you display.
-
-Use some variation in your responses by rotating, or randomly selecting, from a collection of alternative responses. For example, "What movie do you wanna see?" and "What film would you like to watch?". This makes your app sound more natural and unique.
-
-## Localization
-
-To initiate an action using a voice command, your app must register voice commands in the language the user has selected on their device (Settings > System > Speech > Speech Language).
-
-You should localize the voice commands your app responds to and all TTS and GUI strings.
-
-You should avoid lengthy GUI strings. The **Cortana** canvas provides three lines for responses and will truncate strings longer than that.
-
-For more info, see the [Globalization and localization section](../globalizing/guidelines-and-checklist-for-globalizing-your-app.md).
-
-## Image resources and scaling
-
-Universal Windows Platform (UWP) apps can automatically select the most appropriate app logo image based on specific settings and device capabilities (high contrast, effective pixels, locale, and so on). All you need to do is provide the images and ensure you use the appropriate naming convention and folder organization within the app project for the different resource versions. If you don't provide the recommended resource versions, accessibility, localization, and image quality can suffer, depending on the user's preferences, abilities, device type, and location.
-
-For more detail on image resources for high contrast and scale factors, see [Guidelines for tile and icon assets](/windows/uwp/app-resources/images-tailored-for-scale-theme-contrast).
-
-You name resources using qualifiers. Resource qualifiers are folder and filename modifiers that identify the context in which a particular version of a resource should be used.
-
-The standard naming convention is "foldername/qualifiername-value\[\_qualifiername-value\]/filename.qualifiername-value\[\_qualifiername-value\].ext". For example: images/logo.scale-100\_contrast-white.png is simply referred to in code using the root folder and the filename: images/logo.png. See [Manage language and region](../globalizing/manage-language-and-region.md) and [How to name resources using qualifiers](/previous-versions/windows/apps/hh965324(v=win.10)).
-
-We recommend that you mark the default language on string resource files (such as "en-US\\resources.resw") and the default scale factor on images (such as "logo.scale-100.png"), even if you do not currently plan to provide localized or multiple resolution resources. However, at a minimum, we recommend that you provide assets for 100, 200, and 400 scale factors.
-
-> [!IMPORTANT]
-> The app icon used in the title area of the Cortana canvas is the Square44x44Logo icon specified in the "Package.appxmanifest" file.
-
-You can also specify an icon for each result tile for a user query. Valid image sizes for results icons are:
-
-- 68w x 68h
-- 68w x 92h
-- 280w x 140h
-
-## Result tile templates
-
-A set of templates are provided for the result tiles displayed on the Cortana canvas. Use these templates to specify the tile title and whether the tile includes text and a result icon image. Each tile can include up to three lines of text and one image, depending on the template specified.
-
-Here are the supported templates (with examples):
-
-| Name | Example |
-| --- | --- |
-| Title only | :::image type="content" source="images/cortana/voicecommandcontenttiletype-titleonly-small.png" alt-text="Screenshot of the Cortana canvas showing Title only"::: |
-| Title with text | :::image type="content" source="images/cortana/voicecommandcontenttiletype-titlewithtext-small.png" alt-text="Screenshot of the Cortana canvas showing Title with text"::: |
-| Title with 68x68 icon | no image |
-| Title with 68x68 icon and text | :::image type="content" source="images/cortana/voicecommandcontenttiletype-titlewith68x68iconandtext-small.png" alt-text="Screenshot of the Cortana canvas showing Title with 68x68 icon and text"::: |
-| Title with 68x92 icon | no image |
-| Title with 68x92 icon and text | :::image type="content" source="images/cortana/voicecommandcontenttiletype-titlewith68x92iconandtext-small.png" alt-text="Screenshot of the Cortana canvas showing Title with 68x92 icon and text"::: |
-| Title with 280x140 icon | no image |
-| Title with 280x140 icon and text | :::image type="content" source="images/cortana/voicecommandcontenttiletype-titlewith280x140iconandtext-small.png" alt-text="Screenshot of the Cortana canvas showing Title with 280x140 icon and text"::: |
-
-See [VoiceCommandContentTileType](/uwp/api/Windows.ApplicationModel.VoiceCommands.VoiceCommandContentTileType) for more info on Cortana templates.
-
-## Example
-
-This example demonstrates an end-to-end task flow for a background app in **Cortana**. We're using the **Adventure Works** app to cancel a trip to Las Vegas. This example uses the "Title with 68x68 icon and text" template.
-
-:::image type="content" source="images/cortana/e2e-canceltrip.png" alt-text="Screenshot of the Cortana canvas for end to end Cortana background app flow":::
-
-Here are the steps outlined in this image:
-
-1. The user taps the microphone to initiate **Cortana**.
-2. The user says "Cancel my Adventure Works trip to Vegas" to launch the **Adventure Works** app in the background. The app uses both **Cortana** speech and canvas to interact with the user.
-3. **Cortana** transitions to a handoff screen that gives the user acknowledgment feedback ("I'll get Adventure Works on that."), a status bar, and a cancel button.
-4. In this case, the user has multiple trips that match the query, so the app provides a disambiguation screen that lists all the matching results and asks, “Which one do you wanna cancel?”
-5. The user specifies the "Vegas Tech Conference" item.
-6. As the cancellation cannot be undone, the app provides a confirmation screen that asks the user to confirm their intent.
-7. The user says "Yes".
-8. The app then provides a completion screen that shows the result of the operation.
-
-We explore these steps in more detail here.
-
-### Handoff
-
-:::image type="content" source="images/cortana/cortana-backgroundapp-result.png" alt-text="Screenshot of the Cortana canvas for end to end Cortana background app flow using AdventureWorks upcoming trip with no handoff":::*AdventureWorks "Upcoming trip" with no handoff screen*
-
-:::image type="content" source="images/cortana/cortana-backgroundapp-progress-result.png" alt-text="Screenshot of the Cortana canvas for end to end Cortana background app flow using AdventureWorks upcoming trip with handoff":::*AdventureWorks "Upcoming trip" with handoff screen*
-
-Tasks that take less than 500ms for your app to respond, and require no additional information from the user, can be completed without further participation from **Cortana**, other than displaying the completion screen.
-
-If your application requires more than 500ms to respond, **Cortana** provides a handoff screen. The app icon and name are displayed, and you must provide both GUI and TTS handoff strings to indicate that the voice command was correctly understood. The handoff screen will be shown for up to 5 seconds; if your app doesn't respond within this time, **Cortana** presents a generic error screen.
-
-### GUI and TTS guidelines for handoff screens
-
-Clearly indicate that the task is in progress.
-
-Use present tense.
-
-Use an action verb that confirms what task is initiating and reference the specific entity.
-
-Use a generic verb that doesn't commit to the requested, incomplete action. For example, "Looking for your trip" instead of "Canceling your trip". In this case, if no results are returned the user doesn't hear something like "Cancelling your trip to Las Vegas… I couldn’t find a trip to Las Vegas".
-
-Be clear that the task hasn’t already taken place if the app still needs to resolve the entity requested. For example, notice how we say “Looking for your trip” instead of “Cancelling your trip” because zero or more trips can be matched, and we don’t know the result yet.
-
-The GUI and TTS strings can be the same, but don’t need to be. Try to keep the GUI string short to avoid truncation and duplication of other visual assets.
-
-| TTS | GUI |
-| --- | --- |
-| Looking for your next Adventure Works trip. | Looking for your next trip… |
-| Searching for your Adventure Works trip to Falls City. | Searching for trip to Falls City... |
-
-### Progress
-
-:::image type="content" source="images/cortana/e2e-canceltrip-progress.png" alt-text="Screenshot of the Cortana canvas for end to end Cortana background app flow using AdventureWorks cancel trip progress":::*AdventureWorks "Cancel trip" progress*
-
-When a task takes a while between steps, your app needs to step in and update the user on what’s happening on a progress screen. The app icon is displayed, and you must provide both GUI and TTS progress strings to indicate that the task is underway.
-
-You should provide a link to your app with launch parameters to start the app in the appropriate state. This lets the user view or complete the task themselves. **Cortana** provides the link text (such as, "Go to Adventure Works").
-
-Progress screens will show for 5 seconds each, after which they must be followed by another screen or the task will time out.
-
-These screens can follow a progress screen:
-
-- Progress
-- Confirmation (explicit, described later)
-- Disambiguation
-- Completion
-
-### GUI and TTS guidelines for progress screens
-
-Use present tense.
-
-Use an action verb that confirms the task is underway.
-
-**GUI**: If the entity is shown, use a reference to it ("Cancelling this trip…"); if no entity is shown, explicitly call out the entity ("Cancelling 'Vegas Tech Conference'").
-
-**TTS**: You should only include a TTS string on the first progress screen. If further progress screens are required, send an empty string, {}, as your TTS string, and provide a GUI string only.
-
-| Conditions | TTS | GUI |
-| --- | --- | --- |
-| ENTITY READ ON PRIOR TURN / ENTITY SHOWN ON DISPLAY | Cancelling this trip… | Cancelling this trip… |
-| ENTITY NOT READ ON PRIOR TURN / ENTITY SHOWN ON DISPLAY | Cancelling your trip to Vegas… | Cancelling this trip… |
-| ENTITY NOT READ ON PRIOR TURN / ENTITY NOT SHOWN | Cancelling your trip to Vegas… | Cancelling your trip to Vegas… |
-
-### Confirmation
-
-:::image type="content" source="images/cortana/e2e-canceltrip-confirmation.png" alt-text="Screenshot of the Cortana canvas for end to end Cortana background app flow using AdventureWorks cancel trip confirmation":::*AdventureWorks "Cancel trip" confirmation*
-
-Some tasks can be implicitly confirmed by the nature of the user’s command; others are potentially more sensitive and require explicit confirmation. Here are some guidelines for when to use explicit vs. implicit confirmation.
-
-Both GUI and TTS strings on the confirmation screen are specified by your app, and the app icon, if provided, is shown instead of the **Cortana** avatar.
-
-After the customer responds to the confirmation, your application must provide the next screen within 500 ms to avoid going to a progress screen.
-
-Use explicit when...
-
-- Content is leaving the user (such as, a text message, email, or social post)
-- An action can’t be undone (such as, making a purchase or deleting something)
-- The result could be embarrassing (such as, calling the wrong person)
-- More complex recognition is required (such as, open-ended transcription)
-
-Use implicit when...
-
-- Content is saved for the user only (such as, a note-to-self)
-- There’s an easy way to back out (such as, turning an alarm on or off)
-- The task needs to be quick (such as, quickly capturing an idea before forgetting)
-- Accuracy is high (such as, a simple menu)
-
-### GUI and TTS guidelines for confirmation screens
-
-Use present tense.
-
-Ask the user an unambiguous question that can be answered with "Yes" or "No". The question should explicitly confirm what the user is trying to do and there should be no other obvious options.
-
-Provide a variation of the question for a re-prompt, in case the voice command is not understood the first time.
-
-**GUI**: If the entity is shown, use a reference to it. If no entity is shown, explicitly call out the entity.
-
-**TTS**: For clarity, always reference the specific item or entity, unless it was read out by the system on the previous turn.
-
-| Conditions | TTS | GUI |
-| --- | --- | --- |
-| ENTITY NOT READ ON PRIOR TURN / ENTITY SHOWN ON DISPLAY | Do you wanna cancel Vegas Tech Conference? | Cancel this trip? |
-| ENTITY NOT READ ON PRIOR TURN / ENTITY NOT SHOWN | Do you wanna cancel Vegas Tech Conference? | Cancel Vegas Tech Conference? |
-| ENTITY READ ON PRIOR TURN / ENTITY NOT SHOWN | Do you wanna cancel this trip? | Cancel this trip? |
-| REPROMPT WITH ENTITY SHOWN | Did you wanna cancel this trip? | Did you want to cancel this trip? |
-| REPROMPT WITH ENTITY NOT SHOWN | Did you wanna cancel this trip? | Did you want to cancel Vegas Tech Conference? |
-
-### Disambiguation
-
-:::image type="content" source="images/cortana/cortana-disambiguation-screen.png" alt-text="Screenshot of the Cortana canvas for end to end Cortana background app flow using AdventureWorks cancel trip disambiguation":::*AdventureWorks "Cancel trip" disambiguation*
-
-Some tasks might require the user to select from a list of entities to complete the task.
-
-Both GUI and TTS strings on the disambiguation screen are specified by your app, and the app icon, if provided, is shown instead of the **Cortana** avatar.
-
-After the customer responds to the disambiguation question, your application must provide the next screen within 500 ms to avoid going to a progress screen.
-
-### GUI and TTS guidelines for disambiguation screens
-
-Use present tense.
-
-Ask the user an unambiguous question that can be answered with the title or text line of any entity displayed.
-
-Up to 10 entities can be displayed.
-
-Each entity should have a unique title.
-
-Provide a variation of the question for a re-prompt, in case the voice command is not understood the first time.
-
-**TTS**: For clarity, always reference the specific item or entity, unless it was spoken on the previous turn.
-
-**TTS**: Don't read out the entity list, unless there are three or fewer and they are short.
-
-| Conditions | TTS | GUI |
-|----------------------------|--------------------------------------------------------------------------------|----------------------------------|
-| PROMPT - 3 OR FEWER ITEMS | Which Vegas trip do you wanna cancel? Vegas Tech Conference or Party in Vegas? | Which one do you want to cancel? |
-| PROMPT - MORE THAN 3 ITEMS | Which Vegas trip do you wanna cancel? | Which one do you want to cancel? |
-| REPROMPT | Which Vegas trip did you wanna cancel? | Which one do you want to cancel? |
-
-### Completion
-
-:::image type="content" source="images/cortana/e2e-canceltrip-completion.png" alt-text="Screenshot of the Cortana canvas for end to end Cortana background app flow using AdventureWorks cancel trip completion":::*AdventureWorks "Cancel trip" completion*
-
-On successful task completion, your app should inform the user that the requested task was completed successfully.
-
-Both GUI and TTS strings on the completion screen are specified by your app, and the app icon, if provided, is shown instead of the **Cortana** avatar.
-
-You should provide a link to your app with launch parameters to start the app in the appropriate state. This lets the user view or complete the task themselves. **Cortana** provides the link text (such as, "Go to Adventure Works").
-
-### GUI and TTS guidelines for completion screens
-
-Use past tense.
-
-Use an action verb to explicitly state that the task has completed.
-
-If the entity is shown, or it has been referenced on prior turn, only reference it.
-
-| Conditions | TTS | GUI |
-|--------------------------------------------------|-------------------------------------------------|------------------------------------|
-| ENTITY SHOWN / ENTITY READ ON PRIOR TURN | I’ve cancelled this trip. | Cancelled this trip. |
-| ENTITY NOT SHOWN / ENTITY NOT READ ON PRIOR TURN | I’ve cancelled your Vegas Tech Conference trip. | Cancelled "Vegas Tech Conference." |
-
-### Error
-
-:::image type="content" source="images/cortana/e2e-canceltrip-error.png" alt-text="Screenshot of the Cortana canvas for end to end Cortana background app flow using AdventureWorks cancel trip error":::*AdventureWorks "Cancel trip" error*
-
-When one of the following errors occur, **Cortana** displays the same generic error message.
-
-- The app service terminates unexpectedly.
-- **Cortana** fails to communicate with the app service.
-- The app fails to provide a screen after **Cortana** shows a handoff screen or a progress screen for 5 seconds.
-
-## Related articles
-
-- [Cortana interactions in Windows apps](cortana-interactions.md)
-- [VCD elements and attributes v1.2](/uwp/schemas/voicecommands/voice-command-elements-and-attributes-1-2)
-- [Cortana voice command sample](https://go.microsoft.com/fwlink/p/?LinkID=619899)
diff --git a/hub/apps/design/input/cortana-dynamically-modify-voice-command-definition-vcd-phrase-lists.md b/hub/apps/design/input/cortana-dynamically-modify-voice-command-definition-vcd-phrase-lists.md
deleted file mode 100644
index 8dcd12c3bf..0000000000
--- a/hub/apps/design/input/cortana-dynamically-modify-voice-command-definition-vcd-phrase-lists.md
+++ /dev/null
@@ -1,144 +0,0 @@
----
-title: Dynamically modify Cortana VCD phrase lists - Cortana UWP design and development
-description: Access and update the list of supported phrases (PhraseList elements) in a Voice Command Definition (VCD) file at run time using the speech recognition result.
-ms.assetid: b497145b-c7a0-454a-8329-6bc1228953bb
-ms.date: 01/28/2021
-ms.topic: article
-keywords: cortana
----
-
-# Dynamically modify Cortana VCD phrase lists
-
->[!WARNING]
-> This feature is no longer supported as of the Windows 10 May 2020 Update (version 2004, codename "20H1").
->
-> See [Cortana in Microsoft 365](/microsoft-365/admin/misc/cortana-integration) for how Cortana is transforming modern productivity experiences.
-
-Access and update the list of supported phrases (**PhraseList** elements) in a Voice Command Definition (VCD) file at run time using the speech recognition result.
-
-> [!NOTE]
-> A voice command is a single utterance with a specific intent, defined in a Voice Command Definition (VCD) file, directed at an installed app via **Cortana**.
->
-> A VCD file defines one or more voice commands, each with a unique intent.
->
-> Voice command definitions can vary in complexity. They can support anything from a single, constrained utterance to a collection of more flexible, natural language utterances, all denoting the same intent.
-
-Dynamically modifying a phrase list at run time is useful if the voice command is specific to a task involving some kind of user-defined, or transient, app data.
-
-> [!NOTE]
-> **Important APIs**
->
-> - [**Windows.ApplicationModel.VoiceCommands**](/uwp/api/Windows.ApplicationModel.VoiceCommands)
-> - [**VCD elements and attributes v1.2**](/uwp/schemas/voicecommands/voice-command-elements-and-attributes-1-2)
-
-As an example, let's say you have a travel app where users can enter destinations, and you want users to be able to start the app by saying the app name followed by "Show trip to <destination>". In the **ListenFor** element itself, you would specify something like: ` Show trip to {destination} `, where "destination" is the value of the **Label** attribute for the **PhraseList**.
-
-Updating the phrase list at run time eliminates the need to create a separate **ListenFor** element for each possible destination. Instead, you can dynamically populate **PhraseList** with destinations specified by the user as they enter their itineraries.
-
-For more info about **PhraseList** and other VCD elements, see the [**VCD elements and attributes v1.2**](/uwp/schemas/voicecommands/voice-command-elements-and-attributes-1-2) reference.
-
-> [!TIP]
-> **Prerequisites**
->
-> If you're new to developing Universal Windows Platform (UWP) apps, have a look through these topics to get familiar with the technologies discussed here.
->
-> - [Create your first app](/windows/uwp/get-started/your-first-app)
-> - Learn about events with [Events and routed events overview](/windows/uwp/xaml-platform/events-and-routed-events-overview)
->
-> **User experience guidelines**
->
-> See [Cortana design guidelines](cortana-design-guidelines.md) for info about how to integrate your app with **Cortana** and [Speech interactions](speech-interactions.md) for helpful tips on designing a useful and engaging speech-enabled app.
-
-## Identify the command and update the phrase list
-
-Here's an example VCD file that defines a **Command** "showTripToDestination" and a **PhraseList** that defines three options for destination in our **Adventure Works** travel app. As the user saves and deletes destinations in the app, the app updates the options in the **PhraseList**.
-
-```XML
-
-
-
- Adventure Works,
- Show trip to London
-
-
- show trip to London
- show trip to {destination}
- Showing trip to {destination}
-
-
-
-
- London
- Dallas
- New York
-
-
-
-
-
-
-
-```
-
-To update a **PhraseList** element in the VCD file, get the **CommandSet** element that contains the phrase list. Use the **Name** attribute of that **CommandSet** element (**Name** must be unique in the VCD file) as a key to access the [**VoiceCommandManager.InstalledCommandSets**](/uwp/api/Windows.Media.SpeechRecognition.VoiceCommandManager) property and get the [**VoiceCommandSet**](/uwp/api/Windows.Media.SpeechRecognition.VoiceCommandSet) reference.
-
-After you've identified the command set, get a reference to the phrase list that you want to modify and call the [**SetPhraseListAsync**](/uwp/api/Windows.Media.SpeechRecognition.VoiceCommandSet) method; use the **Label** attribute of the **PhraseList** element and an array of strings as the new content of the phrase list.
-
-> [!NOTE]
-> If you modify a phrase list, the entire phrase list is replaced. If you want to insert new items into a phrase list, you must specify both the existing items and the new items in the call to [**SetPhraseListAsync**](/uwp/api/Windows.Media.SpeechRecognition.VoiceCommandSet).
-
-In this example, we update the **PhraseList** shown in the previous example with an additional destination to Phoenix.
-
-```CSharp
-Windows.ApplicationModel.VoiceCommands.VoiceCommandDefinition.VoiceCommandSet commandSetEnUs;
-
-if (Windows.ApplicationModel.VoiceCommands.VoiceCommandDefinitionManager.
- InstalledCommandSets.TryGetValue(
- "AdventureWorksCommandSet_en-us", out commandSetEnUs))
-{
- await commandSetEnUs.SetPhraseListAsync(
- "destination", new string[] {“London”, “Dallas”, “New York”, “Phoenix”});
-}
-```
-
-## Remarks
-
-Using a **PhraseList** to constrain the recognition is appropriate for a relatively small set or words. When the set of words is too large (hundreds of words, for example), or shouldn’t be constrained at all, use the **PhraseTopic** element and a **Subject** element to refine the relevance of speech-recognition results to improve scalability.
-
-In our example, we have a **PhraseTopic** with a **Scenario** of "Search", further refined by a **Subject** of "City\\State".
-
-```XML
-
-
-
- Adventure Works,
- Show trip to London
-
-
- show trip to London
- show trip to {destination}
- Showing trip to {destination}
-
-
-
-
- London
- Dallas
- New York
-
-
-
- City/State
-
-
-
-```
-
-## Related articles
-
-- [Cortana interactions in Windows apps](cortana-interactions.md)
-- [VCD elements and attributes v1.2](/uwp/schemas/voicecommands/voice-command-elements-and-attributes-1-2)
-- [Activate a foreground app with voice commands through Cortana](cortana-launch-a-foreground-app-with-voice-commands.md)
-- [Activate a background app in Cortana using voice commands](cortana-launch-a-background-app-with-voice-commands.md)
-- [Cortana design guidelines](cortana-design-guidelines.md)
-- [Cortana voice command sample](https://go.microsoft.com/fwlink/p/?LinkID=619899)
diff --git a/hub/apps/design/input/cortana-interact-with-a-background-app.md b/hub/apps/design/input/cortana-interact-with-a-background-app.md
deleted file mode 100644
index ade6be65f7..0000000000
--- a/hub/apps/design/input/cortana-interact-with-a-background-app.md
+++ /dev/null
@@ -1,454 +0,0 @@
----
-title: Interact with a background app in Cortana - Cortana UWP design and development
-description: Enable user interaction with a background app, through speech and text input in the Cortana canvas, while executing a voice command.
-ms.assetid: e42917dc-aece-4880-813f-80b897f9126c
-ms.date: 01/28/2021
-ms.topic: article
-keywords: cortana
----
-# Interact with a background app in Cortana
-
->[!WARNING]
-> This feature is no longer supported as of the Windows 10 May 2020 Update (version 2004, codename "20H1").
->
-> See [Cortana in Microsoft 365](/microsoft-365/admin/misc/cortana-integration) for how Cortana is transforming modern productivity experiences.
-
-Enable user interaction with a background app, through speech and text input in the **Cortana** canvas, while executing a voice command.
-
-> [!NOTE]
-> **Important APIs**
->
-> - [**Windows.ApplicationModel.VoiceCommands**](/uwp/api/Windows.ApplicationModel.VoiceCommands)
-> - [**VCD elements and attributes v1.2**](/uwp/schemas/voicecommands/voice-command-elements-and-attributes-1-2)
-
-Cortana supports a complete turn-by-turn workflow with your app. This workflow is defined by your app, and can support functionality such as:
-
-- Successful completion
-- Hand-off
-- Progress
-- Confirmation
-- Disambiguation
-- Error
-
-## Composing feedback strings
-
-> [!TIP]
-> **Prerequisites**
->
-> If you're new to developing Universal Windows Platform (UWP) apps, have a look through these topics to get familiar with the technologies discussed here.
->
-> - [Create your first app](/windows/uwp/get-started/your-first-app)
-> - Learn about events with [Events and routed events overview](/windows/uwp/xaml-platform/events-and-routed-events-overview)
->
-> **User experience guidelines**
->
-> See [Cortana design guidelines](cortana-design-guidelines.md) for info about how to integrate your app with **Cortana** and [Speech interactions](speech-interactions.md) for helpful tips on designing a useful and engaging speech-enabled app.
-
-Compose the feedback strings that are both displayed and spoken by **Cortana**.
-
-The [Cortana design guidelines](cortana-design-guidelines.md) provides recommendations on composing strings for **Cortana**.
-
-Content cards can provide additional context for the user and help you keep feedback strings concise.
-
-**Cortana** supports the following content card templates (only one template can be used on the completion screen):
-
-- Title only
-- Title with up to three lines of text
-- Title with image
-- Title with image and up to three lines of text
-
-The image can be:
-
-- 68w x 68h
-- 68w x 92h
-- 280w x 140h
-
-You can also let users launch your app in the foreground by clicking either a card or the text link to your app.
-
-## Completion screen
-
-A completion screen provides the user with information about the completed voice command task.
-
-Tasks that take less than 500 milliseconds for your app to respond, and require no additional information from the user, are completed without further interaction with **Cortana**. Cortana simply displays the completion screen.
-
-Here, we use the **Adventure Works** app to show the completion screen for a voice command request to display upcoming trips to London.
-
-:::image type="content" source="images/cortana/cortana-completion-screen-upcomingtrip-small.png" alt-text="Screenshot of Cortana background app completion for an upcoming trip":::
-
-The voice command is defined in AdventureWorksCommands.xml:
-
-```xml
-
- When is my trip to Las Vegas?
- when is [my] trip to {destination}
- when is [my] {builtin:AppName} trip to {destination}
- Looking for trip to {destination}
-
-
-```
-
-AdventureWorksVoiceCommandService.cs contains the completion message method:
-
-```csharp
-///
-/// Show details for a single trip, if the trip can be found.
-/// This demonstrates a simple response flow in Cortana.
-///
-/// The destination, expected to be in the phrase list.
-private async Task SendCompletionMessageForDestination(string destination)
-{
- // If this operation is expected to take longer than 0.5 seconds, the task must
- // supply a progress response to Cortana before starting the operation, and
- // updates must be provided at least every 5 seconds.
- string loadingTripToDestination = string.Format(
- cortanaResourceMap.GetValue("LoadingTripToDestination", cortanaContext).ValueAsString,
- destination);
- await ShowProgressScreen(loadingTripToDestination);
- Model.TripStore store = new Model.TripStore();
- await store.LoadTrips();
-
- // Query for the specified trip.
- // The destination should be in the phrase list. However, there might be
- // multiple trips to the destination. We pick the first.
- IEnumerable trips = store.Trips.Where(p => p.Destination == destination);
-
- var userMessage = new VoiceCommandUserMessage();
- var destinationsContentTiles = new List();
- if (trips.Count() == 0)
- {
- string foundNoTripToDestination = string.Format(
- cortanaResourceMap.GetValue("FoundNoTripToDestination", cortanaContext).ValueAsString,
- destination);
- userMessage.DisplayMessage = foundNoTripToDestination;
- userMessage.SpokenMessage = foundNoTripToDestination;
- }
- else
- {
- // Set plural or singular title.
- string message = "";
- if (trips.Count() > 1)
- {
- message = cortanaResourceMap.GetValue("PluralUpcomingTrips", cortanaContext).ValueAsString;
- }
- else
- {
- message = cortanaResourceMap.GetValue("SingularUpcomingTrip", cortanaContext).ValueAsString;
- }
- userMessage.DisplayMessage = message;
- userMessage.SpokenMessage = message;
-
- // Define a tile for each destination.
- foreach (Model.Trip trip in trips)
- {
- int i = 1;
-
- var destinationTile = new VoiceCommandContentTile();
-
- destinationTile.ContentTileType = VoiceCommandContentTileType.TitleWith68x68IconAndText;
- destinationTile.Image = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///AdventureWorks.VoiceCommands/Images/GreyTile.png"));
-
- destinationTile.AppLaunchArgument = trip.Destination;
- destinationTile.Title = trip.Destination;
- if (trip.StartDate != null)
- {
- destinationTile.TextLine1 = trip.StartDate.Value.ToString(dateFormatInfo.LongDatePattern);
- }
- else
- {
- destinationTile.TextLine1 = trip.Destination + " " + i;
- }
-
- destinationsContentTiles.Add(destinationTile);
- i++;
- }
- }
-
- var response = VoiceCommandResponse.CreateResponse(userMessage, destinationsContentTiles);
-
- if (trips.Count() > 0)
- {
- response.AppLaunchArgument = destination;
- }
-
- await voiceServiceConnection.ReportSuccessAsync(response);
-}
-```
-
-## Hand-off screen
-
-Once a voice command is recognized, **Cortana** must call ReportSuccessAsync and present feedback within approximately 500If the app service cannot complete the action specified by the voice command within 500ms, **Cortana** presents a hand-off screen that is shown until your app calls ReportSuccessAsync, or for up to 5 seconds.
-
-If the app service doesn’t call ReportSuccessAsync, or any other VoiceCommandServiceConnection method, the user receives an error message and the app service call is cancelled.
-
-Here's an example of a hand-off screen for the **Adventure Works** app. In this example, a user has queried **Cortana** for upcoming trips. The hand-off screen includes a message customized with the app service name, an icon, and a **Feedback** string.
-
-[!NOTE] You can declare a **Feedback** string in the VCD file. This string does not affect the UI text displayed on the Cortana canvas, it only affects the text spoken by **Cortana**.
-
-:::image type="content" source="images/cortana/cortana-backgroundapp-progress-result.png" alt-text="Screenshot of the Cortana background app hand-off screen":::
-
-## Progress screen
-
-If the app service takes more than 500ms to call ReportSuccessAsync, **Cortana** provides the user with a progress screen. The app icon is displayed, and you must provide both GUI and TTS progress strings to indicate that the task is being actively handled.
-
-**Cortana** shows a progress screen for a maximum of 5 seconds. After 5 seconds, **Cortana** presents the user with an error message and the app service is closed. If the app service needs more than 5 seconds to complete the action, it can continue to update **Cortana** with progress screens.
-
-Here's an example of a progress screen for the **Adventure Works** app. In this example, a user has canceled a trip to Las Vegas. The progress screen includes a message customized for the action, an icon, and a content tile with information about the trip being canceled.
-
-:::image type="content" source="images/cortana/cortana-progress-screen.png" alt-text="Screenshot of Cortana with background app progress screen":::
-
-AdventureWorksVoiceCommandService.cs contains the following progress message method, which calls [**ReportProgressAsync**](/uwp/api/Windows.ApplicationModel.VoiceCommands.VoiceCommandServiceConnection) to show the progress screen in **Cortana**.
-
-``` CSharp
-///
-/// Show a progress screen. These should be posted at least every 5 seconds for a
-/// long-running operation.
-///
-/// The message to display, relating to the task being performed.
-///
-private async Task ShowProgressScreen(string message)
-{
- var userProgressMessage = new VoiceCommandUserMessage();
- userProgressMessage.DisplayMessage = userProgressMessage.SpokenMessage = message;
-
- VoiceCommandResponse response = VoiceCommandResponse.CreateResponse(userProgressMessage);
- await voiceServiceConnection.ReportProgressAsync(response);
-}
-```
-
-## Confirmation screen
-
-When an action specified by a voice command is irreversible, has a significant impact, or the recognition confidence is not high, an app service can request confirmation.
-
-Here's an example of a confirmation screen for the **Adventure Works** app. In this example, a user has instructed the app service to cancel a trip to Las Vegas through **Cortana**. The app service has provided **Cortana** with a confirmation screen that prompts the user for a yes or no answer before canceling the trip.
-
-If the user says something other than "Yes" or "No", **Cortana** cannot determine the answer to the question. In this case, **Cortana** prompts the user with a similar question provided by the app service.
-
-On the second prompt, if the user still doesn’t say "Yes" or "No", **Cortana** prompts the user a third time with the same question prefixed with an apology. If the user still doesn’t say "Yes" or "No", **Cortana** stops listening for voice input and asks the user to tap one of the buttons instead.
-
-The confirmation screen includes a message customized for the action, an icon, and a content tile with information about the trip being canceled.
-
-:::image type="content" source="images/cortana/cortana-confirmation-screen.png" alt-text="Screenshot of Cortana with background app confirmation screen":::
-
-AdventureWorksVoiceCommandService.cs contains the following trip cancellation method, which calls [**RequestConfirmationAsync**](/uwp/api/Windows.ApplicationModel.VoiceCommands.VoiceCommandServiceConnection) to show a confirmation screen in **Cortana**.
-
-``` CSharp
-///
-/// Handle the Trip Cancellation task. This task demonstrates how to prompt a user
-/// for confirmation of an operation, show users a progress screen while performing
-/// a long-running task, and show a completion screen.
-///
-/// The name of a destination.
-///
-private async Task SendCompletionMessageForCancellation(string destination)
-{
- // Begin loading data to search for the target store.
- // Consider inserting a progress screen here, in order to prevent Cortana from timing out.
- string progressScreenString = string.Format(
- cortanaResourceMap.GetValue("ProgressLookingForTripToDest", cortanaContext).ValueAsString,
- destination);
- await ShowProgressScreen(progressScreenString);
-
- Model.TripStore store = new Model.TripStore();
- await store.LoadTrips();
-
- IEnumerable trips = store.Trips.Where(p => p.Destination == destination);
- Model.Trip trip = null;
- if (trips.Count() > 1)
- {
- // If there is more than one trip, provide a disambiguation screen.
- // However, if a significant number of items are returned, you might want to
- // just display a link to your app and provide a deeper search experience.
- string disambiguationDestinationString = string.Format(
- cortanaResourceMap.GetValue("DisambiguationWhichTripToDest", cortanaContext).ValueAsString,
- destination);
- string disambiguationRepeatString = cortanaResourceMap.GetValue("DisambiguationRepeat", cortanaContext).ValueAsString;
- trip = await DisambiguateTrips(trips, disambiguationDestinationString, disambiguationRepeatString);
- }
- else
- {
- trip = trips.FirstOrDefault();
- }
-
- var userPrompt = new VoiceCommandUserMessage();
-
- VoiceCommandResponse response;
- if (trip == null)
- {
- var userMessage = new VoiceCommandUserMessage();
- string noSuchTripToDestination = string.Format(
- cortanaResourceMap.GetValue("NoSuchTripToDestination", cortanaContext).ValueAsString,
- destination);
- userMessage.DisplayMessage = userMessage.SpokenMessage = noSuchTripToDestination;
-
- response = VoiceCommandResponse.CreateResponse(userMessage);
- await voiceServiceConnection.ReportSuccessAsync(response);
- }
- else
- {
- // Prompt the user for confirmation that this is the correct trip to cancel.
- string cancelTripToDestination = string.Format(
- cortanaResourceMap.GetValue("CancelTripToDestination", cortanaContext).ValueAsString,
- destination);
- userPrompt.DisplayMessage = userPrompt.SpokenMessage = cancelTripToDestination;
- var userReprompt = new VoiceCommandUserMessage();
- string confirmCancelTripToDestination = string.Format(
- cortanaResourceMap.GetValue("ConfirmCancelTripToDestination", cortanaContext).ValueAsString,
- destination);
- userReprompt.DisplayMessage = userReprompt.SpokenMessage = confirmCancelTripToDestination;
-
- response = VoiceCommandResponse.CreateResponseForPrompt(userPrompt, userReprompt);
-
- var voiceCommandConfirmation = await voiceServiceConnection.RequestConfirmationAsync(response);
-
- // If RequestConfirmationAsync returns null, Cortana has likely been dismissed.
- if (voiceCommandConfirmation != null)
- {
- if (voiceCommandConfirmation.Confirmed == true)
- {
- string cancellingTripToDestination = string.Format(
- cortanaResourceMap.GetValue("CancellingTripToDestination", cortanaContext).ValueAsString,
- destination);
- await ShowProgressScreen(cancellingTripToDestination);
-
- // Perform the operation to remove the trip from app data.
- // As the background task runs within the app package of the installed app,
- // we can access local files belonging to the app without issue.
- await store.DeleteTrip(trip);
-
- // Provide a completion message to the user.
- var userMessage = new VoiceCommandUserMessage();
- string cancelledTripToDestination = string.Format(
- cortanaResourceMap.GetValue("CancelledTripToDestination", cortanaContext).ValueAsString,
- destination);
- userMessage.DisplayMessage = userMessage.SpokenMessage = cancelledTripToDestination;
- response = VoiceCommandResponse.CreateResponse(userMessage);
- await voiceServiceConnection.ReportSuccessAsync(response);
- }
- else
- {
- // Confirm no action for the user.
- var userMessage = new VoiceCommandUserMessage();
- string keepingTripToDestination = string.Format(
- cortanaResourceMap.GetValue("KeepingTripToDestination", cortanaContext).ValueAsString,
- destination);
- userMessage.DisplayMessage = userMessage.SpokenMessage = keepingTripToDestination;
-
- response = VoiceCommandResponse.CreateResponse(userMessage);
- await voiceServiceConnection.ReportSuccessAsync(response);
- }
- }
- }
-}
-```
-
-## Disambiguation screen
-
-When an action specified by a voice command has more than one possible outcome, an app service can request more info from the user.
-
-Here's an example of a disambiguation screen for the **Adventure Works** app. In this example, a user has instructed the app service to cancel a trip to Las Vegas through **Cortana**. However, the user has two trips to Las Vegas on different dates and the app service cannot complete the action without the user selecting the intended trip.
-
-The app service provides **Cortana** with a disambiguation screen that prompts the user to make a selection from a list of matching trips, before it cancels any.
-
-In this case, **Cortana** prompts the user with a similar question provided by the app service.
-
-On the second prompt, if the user still doesn’t say something that can be used to identify the selection, **Cortana** prompts the user a third time with the same question prefixed with an apology. If the user still doesn’t say something that can be used to identify the selection, **Cortana** stops listening for voice input and asks the user to tap one of the buttons instead.
-
-The disambiguation screen includes a message customized for the action, an icon, and a content tile with information about the trip being canceled.
-
-:::image type="content" source="images/cortana/cortana-disambiguation-screen.png" alt-text="Screenshot of Cortana with background app disambiguation screen":::
-
-AdventureWorksVoiceCommandService.cs contains the following trip cancellation method, which calls [**RequestDisambiguationAsync**](/uwp/api/Windows.ApplicationModel.VoiceCommands.VoiceCommandServiceConnection) to show the disambiguation screen in **Cortana**.
-
-```csharp
-///
-/// Provide the user with a way to identify which trip to cancel.
-///
-/// The set of trips
-/// The initial disambiguation message
-/// Repeat prompt retry message
-private async Task DisambiguateTrips(IEnumerable trips, string disambiguationMessage, string secondDisambiguationMessage)
-{
- // Create the first prompt message.
- var userPrompt = new VoiceCommandUserMessage();
- userPrompt.DisplayMessage =
- userPrompt.SpokenMessage = disambiguationMessage;
-
- // Create a re-prompt message if the user responds with an out-of-grammar response.
- var userReprompt = new VoiceCommandUserMessage();
- userReprompt.DisplayMessage =
- userReprompt.SpokenMessage = secondDisambiguationMessage;
-
- // Create card for each item.
- var destinationContentTiles = new List();
- int i = 1;
- foreach (Model.Trip trip in trips)
- {
- var destinationTile = new VoiceCommandContentTile();
-
- destinationTile.ContentTileType = VoiceCommandContentTileType.TitleWith68x68IconAndText;
- destinationTile.Image = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///AdventureWorks.VoiceCommands/Images/GreyTile.png"));
-
- // The AppContext can be any arbitrary object.
- destinationTile.AppContext = trip;
- string dateFormat = "";
- if (trip.StartDate != null)
- {
- dateFormat = trip.StartDate.Value.ToString(dateFormatInfo.LongDatePattern);
- }
- else
- {
- // The app allows a trip to have no date.
- // However, the choices must be unique so they can be distinguished.
- // Here, we add a number to identify them.
- dateFormat = string.Format("{0}", i);
- }
-
- destinationTile.Title = trip.Destination + " " + dateFormat;
- destinationTile.TextLine1 = trip.Description;
-
- destinationContentTiles.Add(destinationTile);
- i++;
- }
-
- // Cortana handles re-prompting if no valid response.
- var response = VoiceCommandResponse.CreateResponseForPrompt(userPrompt, userReprompt, destinationContentTiles);
-
- // If cortana is dismissed in this operation, null is returned.
- var voiceCommandDisambiguationResult = await
- voiceServiceConnection.RequestDisambiguationAsync(response);
- if (voiceCommandDisambiguationResult != null)
- {
- return (Model.Trip)voiceCommandDisambiguationResult.SelectedItem.AppContext;
- }
-
- return null;
-}
-```
-
-## Error screen
-
-When an action specified by a voice command cannot be completed, an app service can provide an error screen.
-
-Here's an example of an error screen for the **Adventure Works** app. In this example, a user has instructed the app service to cancel a trip to Las Vegas through **Cortana**. However, the user does not have any trips scheduled to Las Vegas.
-
-The app service provides **Cortana** with an error screen that includes a message customized for the action, an icon, and the specific error message.
-
-Call [**ReportFailureAsync**](/uwp/api/Windows.ApplicationModel.VoiceCommands.VoiceCommandServiceConnection) to show the error screen in **Cortana**.
-
-```csharp
-var userMessage = new VoiceCommandUserMessage();
- userMessage.DisplayMessage = userMessage.SpokenMessage =
- "Sorry, you don't have any trips to Las Vegas";
-
- var response = VoiceCommandResponse.CreateResponse(userMessage);
-
- response.AppLaunchArgument = "showUpcomingTrips";
- await voiceServiceConnection.ReportFailureAsync(response);
-```
-
-## Related articles
-
-- [Cortana interactions in Windows apps](cortana-interactions.md)
-- [VCD elements and attributes v1.2](/uwp/schemas/voicecommands/voice-command-elements-and-attributes-1-2)
-- [Cortana design guidelines](cortana-design-guidelines.md)
-- [Cortana voice command sample](https://go.microsoft.com/fwlink/p/?LinkID=619899)
diff --git a/hub/apps/design/input/cortana-interactions.md b/hub/apps/design/input/cortana-interactions.md
deleted file mode 100644
index 11f9f6c032..0000000000
--- a/hub/apps/design/input/cortana-interactions.md
+++ /dev/null
@@ -1,47 +0,0 @@
----
-description: Extend the basic functionality of **Cortana** with voice commands that launch and execute a single action in a Windows application.
-title: Cortana interactions in Windows apps
-ms.assetid: 4C11A7CF-DA26-4CA1-A9B9-FE52670101F5
-label: Cortana
-template: detail.hbs
-keywords: Cortana, Cortana canvas, Cortana design, user interface, voice commands, VCD
-ms.date: 01/27/2021
-ms.topic: article
-ms.localizationpriority: medium
----
-
-# Cortana interactions in Windows apps
-
->[!WARNING]
-> This feature is no longer supported as of the Windows 10 May 2020 Update (version 2004, codename "20H1").
->
-> See [Cortana in Microsoft 365](/microsoft-365/admin/misc/cortana-integration) for how Cortana is transforming modern productivity experiences.
-
-Extend the basic functionality of **Cortana** with voice commands that launch and execute a single action in a Windows application.
-
-The target app can be launched in the foreground (the app takes focus and **Cortana** is dismissed) or activated in the background (**Cortana** retains focus but provides results from the app), depending on the complexity of the interaction. Generally, voice commands that require additional context or user input are best handled in a foreground app, while basic commands can be handled in **Cortana** through a background app.
-
-By integrating the basic functionality of your app, and providing a central entry point for the user to accomplish most of the tasks without opening your app directly, **Cortana** becomes a liaison between your app and the user. Providing this shortcut to app functionality and reducing the need to switch apps, can save the user significant time and effort.
-
-> [!NOTE]
-> A voice command is a single utterance with a specific intent, defined in a Voice Command Definition (VCD) file, directed at an installed app via **Cortana**.
->
-> A VCD file defines one or more voice commands, each with a unique intent.
->
-> Voice command definitions can vary in complexity. They can support anything from a single, constrained utterance to a collection of more flexible, natural language utterances, all denoting the same intent.
-
-## Other speech and conversation components
-
-### Speech, voice, and conversation in Windows 10
-
-See [Speech, voice, and conversation in Windows 10](../../develop/speech.md) for information on how the various Windows development frameworks provide speech recognition, speech synthesis, and conversation support for developers building Windows applications.
-
-### Cortana Skills Kit
-
-See the [Cortana Skills Kit](/cortana/skills/) if you want to extend Cortana by adding your own skills that enable users to interact with your **service** via Cortana. [**Deprecation notice:** As part of our goal to transform the modern productivity experiences by embedding Cortana deeply into Microsoft 365, we are retiring the Cortana skills kit for Consumer (the developer platform) and all skills built on this platform.]
-
-## Related articles
-
-- [VCD elements and attributes v1.2](/uwp/schemas/voicecommands/voice-command-elements-and-attributes-1-2)
-- [Cortana design guidelines](cortana-design-guidelines.md)
-- [Cortana voice command sample](https://go.microsoft.com/fwlink/p/?LinkID=619899)
\ No newline at end of file
diff --git a/hub/apps/design/input/cortana-launch-a-background-app-with-voice-commands.md b/hub/apps/design/input/cortana-launch-a-background-app-with-voice-commands.md
deleted file mode 100644
index 3ac5400889..0000000000
--- a/hub/apps/design/input/cortana-launch-a-background-app-with-voice-commands.md
+++ /dev/null
@@ -1,679 +0,0 @@
----
-title: Activate a background app in Cortana using voice commands | Cortana UWP design and development
-description: Extend Cortana with features from your app (as a background task) using voice commands.
-
-ms.assetid: e2c7eae3-6beb-4156-92a5-474bba53451e
-ms.date: 09/24/2019
-ms.topic: article
-
-keywords: cortana
----
-
-# Activate a background app in Cortana using voice commands
-
->[!WARNING]
-> This feature is no longer supported as of the Windows 10 May 2020 Update (version 2004, codename "20H1").
->
-> See [Cortana in Microsoft 365](/microsoft-365/admin/misc/cortana-integration) for how Cortana is transforming modern productivity experiences.
-
-In addition to using voice commands within **Cortana** to access system features, you may also extend **Cortana** with features and functionality from your app (as a background task) using voice commands that specify an action or command to run. When an app handles a voice command in the background, it does not take focus. Instead, it returns all feedback and results through the **Cortana** canvas and the **Cortana** voice.
-
-> [!NOTE]
-> **Important APIs**
->
-> - [**Windows.ApplicationModel.VoiceCommands**](/uwp/api/Windows.ApplicationModel.VoiceCommands)
-> - [**VCD elements and attributes v1.2**](/uwp/schemas/voicecommands/voice-command-elements-and-attributes-1-2)
-
-Apps may be activated to the foreground (the app takes focus) or activated in the background (**Cortana** retains focus), depending on the complexity of the interaction. For example, voice commands that require additional context or user input (such as sending a message to a specific contact) are best handled in a foreground app, while basic commands (such as listing upcoming trips) may be handled in **Cortana** through a background app.
-
-If you want to activate an app to the foreground using voice commands, see [Activate a foreground app with voice commands through Cortana](cortana-launch-a-foreground-app-with-voice-commands.md).
-
-> [!NOTE]
-> A voice command is a single utterance with a specific intent, defined in a Voice Command Definition (VCD) file, directed at an installed app via **Cortana**.
->
-> A VCD file defines one or more voice commands, each with a unique intent.
->
-> Voice command definitions can vary in complexity. They can support anything from a single, constrained utterance to a collection of more flexible, natural language utterances, all denoting the same intent.
-
-We use a trip planning and management app named **Adventure Works** integrated into the **Cortana** UI, shown here, to demonstrate many of the concepts and features we discuss. For more info, see the [Cortana voice command sample](https://go.microsoft.com/fwlink/p/?LinkID=619899).
-
-:::image type="content" source="images/cortana/cortana-overview.png" alt-text="Screenshot of Cortana launching foreground app":::
-
-To view an **Adventure Works** trip without **Cortana**, a user would launch the app and navigate to the **Upcoming trips** page.
-
-Using voice commands through **Cortana** to launch your app in the background, the user may instead just say, `Adventure Works, when is my trip to Las Vegas?`. Your app handles the command and **Cortana** displays results along with your app icon and other app info, if provided.
-
-:::image type="content" source="images/cortana/cortana-backgroundapp-result.png" alt-text="Screenshot of Cortana with a basic query and result screen using the AdventureWorks app in the background":::
-
-The following basic steps add voice-command functionality and extend **Cortana** with background functionality from your app using speech or keyboard input.
-
-1. Create an app service (see [**Windows.ApplicationModel.AppService**](/uwp/api/Windows.ApplicationModel.AppService)) that **Cortana** invokes in the background.
-2. Create a VCD file. The VCD file is an XML document that defines all the spoken commands that the user may say to initiate actions or invoke commands when activating your app. See [**VCD elements and attributes v1.2**](/uwp/schemas/voicecommands/voice-command-elements-and-attributes-1-2).
-3. Register the command sets in the VCD file when the app is launched.
-4. Handle the background activation of the app service and the running of the voice command.
-5. Display and speak the appropriate feedback to the voice command within **Cortana**.
-
-> [!TIP]
-> **Prerequisites**
->
-> If you're new to developing Universal Windows Platform (UWP) apps, have a look through these topics to get familiar with the technologies discussed here.
->
-> - [Create your first app](/windows/uwp/get-started/your-first-app)
-> - Learn about events with [Events and routed events overview](/windows/uwp/xaml-platform/events-and-routed-events-overview)
->
-> **User experience guidelines**
->
-> See [Cortana design guidelines](cortana-design-guidelines.md) for info about how to integrate your app with **Cortana** and [Speech interactions](speech-interactions.md) for helpful tips on designing a useful and engaging speech-enabled app.
-
-## Create a New Solution with a Primary Project in Visual Studio
-
-1. Launch Microsoft Visual Studio 2015.
- The Visual Studio 2015 Start page appears.
-
-2. On the **File** menu, select **New** > **Project**.
- The **New Project** dialog appears. The left pane of the dialog lets you select the type of templates to display.
-
-3. In the left pane, expand **Installed > Templates > Visual C\# > Windows**, then pick the **Universal** template group. The center pane of the dialog displays a list of project templates for Universal Windows Platform (UWP) apps.
-4. In the center pane, select the **Blank App (Universal Windows)** template.
- The **Blank App** template creates a minimal UWP app that compiles and runs. The **Blank App** template includes no user-interface controls or data. You add controls to the app using this page as a guide.
-
-5. In the **Name** text box, type your project name. Example: Use `AdventureWorks`.
-6. Click on the **OK** button to create the project.
- Microsoft Visual Studio creates your project and displays it in the **Solution Explorer**.
-
-## Add Image Assets to Primary Project and Specify them in the App Manifest
-
-UWP apps should automatically select the most appropriate images. The selection is based upon specific settings and device capabilities (high contrast, effective pixels, locale, and so on). You must provide the images and ensure that you use the appropriate naming convention and folder organization within your app project for the different resource versions.
-If you do not provide the recommended resource versions, then the user experience may suffer in the following ways.
-
-- Accessibility
-- Localization
-- Image quality
-The resource versions are used to adapt the following changes in the user experience.
-- User preferences
-- Abilities
-- Device type
-- Location
-
-For more detail about image resources for high contrast and scale factors, visit the Guidelines for tile and icon assets page located at [msdn.microsoft.com/windows/uwp/controls-and-patterns/tiles-and-notifications-app-assets](/windows/uwp/app-resources/images-tailored-for-scale-theme-contrast).
-
-You must name resources using qualifiers. Resource qualifiers are folder and filename modifiers that identify the context in which a particular version of a resource should be used.
-
-The standard naming convention is `foldername/qualifiername-value[_qualifiername-value]/filename.qualifiername-value[_qualifiername-value].ext`.
-Example: `images/logo.scale-100_contrast-white.png`, which may refer to code using just the root folder and the filename: `images/logo.png`.
-For more information, visit the How to name resources using qualifiers page located at [msdn.microsoft.com/library/windows/apps/xaml/hh965324.aspx](/previous-versions/windows/apps/hh965324(v=win.10)).
-
-Microsoft recommends that you mark the default language on string resource files (such as `en-US\resources.resw`) and the default scale factor on images (such as `logo.scale-100.png`), even if you do not currently plan to provide localized or multiple resolution resources. However, at a minimum, Microsoft recommends that you provide assets for 100, 200, and 400 scale factors.
-
->[!IMPORTANT]
-> The app icon used in the title area of the **Cortana** canvas is the Square44x44Logo icon specified in the `Package.appxmanifest` file.
-> You may also specify an icon for each entry in the content area of the **Cortana** canvas. Valid image sizes for the results icons are:
->
-> - 68w x 68h
-> - 68w x 92h
-> - 280w x 140h
-
-The content tile is not validated until a [**VoiceCommandResponse**](/uwp/api/Windows.ApplicationModel.VoiceCommands.VoiceCommandResponse) object is passed to the [**VoiceCommandServiceConnection**](/uwp/api/Windows.ApplicationModel.VoiceCommands.VoiceCommandServiceConnection) class. If you pass a [**VoiceCommandResponse**](/uwp/api/Windows.ApplicationModel.VoiceCommands.VoiceCommandResponse) object to **Cortana** that includes a content tile with an image that does not adhere to these size ratios, then an exception may occur.
-
-Example: The **Adventure Works** app (`VoiceCommandService\\AdventureWorksVoiceCommandService.cs`) specifies a simple, grey square (`GreyTile.png`) on the [**VoiceCommandContentTile**](/uwp/api/Windows.ApplicationModel.VoiceCommands.VoiceCommandContentTile) class using the [**TitleWith68x68IconAndText**](/uwp/api/Windows.ApplicationModel.VoiceCommands.VoiceCommandContentTileType) tile template. The logo variants are located in `VoiceCommandService\\Images`, and are retrieved using the [**GetFileFromApplicationUriAsync**](/uwp/api/Windows.Storage.StorageFile) method.
-
-```csharp
-var destinationTile = new VoiceCommandContentTile();
-
-destinationTile.ContentTileType = VoiceCommandContentTileType.TitleWith68x68IconAndText;
-destinationTile.Image = await StorageFile.GetFileFromApplicationUriAsync(
- new Uri("ms-appx:///AdventureWorks.VoiceCommands/Images/GreyTile.png")
-);
-```
-
-## Create an App Service Project
-
-1. Right-click on your Solution name, select **New > Project**.
-2. Under **Installed > Templates > Visual C\# > Windows > Universal**, select **Windows Runtime Component**. The **Windows Runtime Component** is the component that implements the app service ([**Windows.ApplicationModel.AppService**](/uwp/api/Windows.ApplicationModel.AppService)).
-3. Type a name for the project and click on the **OK** button.
- Example: `VoiceCommandService`.
-4. In **Solution Explorer**, select the `VoiceCommandService` project and rename the `Class1.cs` file generated by Visual Studio.
- Example: The **Adventure Works** uses `AdventureWorksVoiceCommandService.cs`.
-5. Click on the **Yes** button; when asked if you want to rename all occurrences of `Class1.cs`.
-6. In the `AdventureWorksVoiceCommandService.cs` file:
- 1. Add the following using directive.
- `using Windows.ApplicationModel.Background;`
- 2. When you create a new project, the project name is used as the default root namespace in all files. Rename the namespace to nest the app service code under the primary project.
- Example: `namespace AdventureWorks.VoiceCommands`.
- 3. Right-click on the app service project name in Solution Explorer and select **Properties**.
- 4. On the **Library** tab, update the **Default namespace** field with this same value.
- Example: `AdventureWorks.VoiceCommands`).
- 5. Create a new class that implements the [**IBackgroundTask**](/uwp/api/Windows.ApplicationModel.Background.IBackgroundTask) interface. This class requires a [**Run**](/uwp/api/Windows.ApplicationModel.Background.IBackgroundTask) method, which is the entry point when Cortana recognizes the voice command.
-
- Example: A basic background task class from the **Adventure Works** app.
-
- >[!NOTE]
- > The background task class itself, as well as all classes in the background task project, must be sealed public classes.
-
- ```csharp
- namespace AdventureWorks.VoiceCommands
- {
- ...
-
- ///
- /// The VoiceCommandService implements the entry point for all voice commands.
- /// The individual commands supported are described in the VCD xml file.
- /// The service entry point is defined in the appxmanifest.
- ///
- public sealed class AdventureWorksVoiceCommandService : IBackgroundTask
- {
- ...
-
- ///
- /// The background task entrypoint.
- ///
- /// Background tasks must respond to activation by Cortana within 0.5 second, and must
- /// report progress to Cortana every 5 seconds (unless Cortana is waiting for user
- /// input). There is no running time limit on the background task managed by Cortana,
- /// but developers should use plmdebug (https://msdn.microsoft.com/library/windows/hardware/jj680085%28v=vs.85%29.aspx)
- /// on the Cortana app package in order to prevent Cortana timing out the task during
- /// debugging.
- ///
- /// The Cortana UI is dismissed if Cortana loses focus.
- /// The background task is also dismissed even if being debugged.
- /// Use of Remote Debugging is recommended in order to debug background task behaviors.
- /// Open the project properties for the app package (not the background task project),
- /// and enable Debug -> "Do not launch, but debug my code when it starts".
- /// Alternatively, add a long initial progress screen, and attach to the background task process while it runs.
- ///
- /// Connection to the hosting background service process.
- public void Run(IBackgroundTaskInstance taskInstance)
- {
- //
- // TODO: Insert code
- //
- //
- }
- }
- }
- ```
-
-7. Declare your background task as an **AppService** in the app manifest.
- 1. In **Solution Explorer**, right-click on the `Package.appxmanifest` file and select **View Code**.
- 2. Find the [`Application`](/uwp/schemas/appxpackage/uapmanifestschema/element-application) element.
- 3. Add an [`Extensions`](/uwp/schemas/appxpackage/uapmanifestschema/element-1-extensions) element to the [`Application`](/uwp/schemas/appxpackage/uapmanifestschema/element-application) element.
- 4. Add a [`uap:Extension`](/uwp/schemas/appxpackage/uapmanifestschema/element-1-extension) element to the [`Extensions`](/uwp/schemas/appxpackage/uapmanifestschema/element-1-extensions) element.
- 5. Add a `Category` attribute to the `uap:Extension` element and set the value of the `Category` attribute to `windows.appService`.
- 6. Add an `EntryPoint` attribute to the `uap: Extension` element and set the value of the `EntryPoint` attribute to the name of the class that implements [`IBackgroundTask`](/uwp/api/Windows.ApplicationModel.Background.IBackgroundTask).
- Example: `AdventureWorks.VoiceCommands.AdventureWorksVoiceCommandService`.
- 7. Add a [`uap:AppService`](/uwp/schemas/appxpackage/uapmanifestschema/element-uap-appservice) element to the `uap:Extension` element.
- 8. Add a `Name` attribute to the [`uap:AppService`](/uwp/schemas/appxpackage/uapmanifestschema/element-uap-appservice) element and set the value of the `Name` attribute to a name for the app service, in this case `AdventureWorksVoiceCommandService`.
- 9. Add a second [`uap:Extension`](/uwp/schemas/appxpackage/uapmanifestschema/element-1-extension) element to the [`Extensions`](/uwp/schemas/appxpackage/uapmanifestschema/element-1-extensions) element.
- 10. Add a `Category` attribute to this [`uap:Extension`](/uwp/schemas/appxpackage/uapmanifestschema/element-1-extension) element and set the value of the `Category` attribute to `windows.personalAssistantLaunch`.
-
- Example: A manifest from the Adventure Works app.
-
- ```xml
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ```
-
-8. Add this app service project as a reference in the primary project.
- 1. Right-click on the **References**.
- 2. Select **Add Reference...**.
- 3. In the **Reference Manager** dialog, expand **Projects** and select the app service project.
- 4. Click on the **OK** button.
-
-## Create a VCD File
-
-1. In Visual Studio, right-click on your primary project name, select **Add > New Item**. Add an **XML File**.
-2. Type a name for the [**VCD**](/uwp/schemas/voicecommands/voice-command-elements-and-attributes-1-2) file.
- Example: `AdventureWorksCommands.xml`.
-3. Click on the **Add** button.
-4. In **Solution Explorer**, select the [**VCD**](/uwp/schemas/voicecommands/voice-command-elements-and-attributes-1-2) file.
-5. In the **Properties** window, set **Build action** to **Content**, and then set **Copy to output directory** to **Copy if newer**.
-
-## Edit the VCD File
-
-1. Add a `VoiceCommands` element with an `xmlns` attribute pointing to `https://schemas.microsoft.com/voicecommands/1.2`.
-2. For each language supported by your app, create a [`CommandSet`](/previous-versions/windows/dn722331(v=win.10)) element that includes the voice commands supported by your app.
- You are able to declare multiple [`CommandSet`](/previous-versions/windows/dn722331(v=win.10)) elements, each with a different [`xml:lang`](/previous-versions/windows/dn722331(v=win.10)) attribute so your app to be used in different markets. For example, an app for the United States might have a [`CommandSet`](/previous-versions/windows/dn722331(v=win.10)) for English and a [`CommandSet`](/previous-versions/windows/dn722331(v=win.10)) for Spanish.
-
- >[!IMPORTANT]
- > To activate an app and initiate an action using a voice command, the app must register a VCD file that includes a [`CommandSet`](/previous-versions/windows/dn722331(v=win.10)) element with a language that matches the speech language indicated in the device of the user. The speech language is located in **Settings > System > Speech > Speech Language**.
-
-3. Add a `Command` element for each command you want to support.
- Each `Command` declared in a [**VCD**](/uwp/schemas/voicecommands/voice-command-elements-and-attributes-1-2) file must include this information:
- - A `Name` attribute that your application uses to identify the voice command at runtime.
- - An `Example` element that includes a phrase describing how a user invokes the command. **Cortana** shows the example when the user says `What can I say?`, `Help`, or taps **See more**.
- - A `ListenFor` element that includes the words or phrases that your app recognizes as a command. Each `ListenFor` element may contain references to one or more `PhraseList` elements that contain specific words relevant to the command.
-
- >[!NOTE]
- > `ListenFor` elements must not be programmatically modified. However, `PhraseList` elements associated with `ListenFor` elements may be programmatically modified. Applications should modify the content of the `PhraseList` element at runtime based on the data set generated as the user uses the app.
- >
- > For more information, see [Dynamically modify Cortana VCD phrase lists](cortana-dynamically-modify-voice-command-definition-vcd-phrase-lists.md).
-
- - A `Feedback` element that includes the text for **Cortana** to display and speak as the application is launched.
-
-A `Navigate` element indicates that the voice command activates the app to the foreground. In this example, the ```showTripToDestination``` command is a foreground task.
-
-A `VoiceCommandService` element indicates that the voice command activates the app in the background. The value of the `Target` attribute of this element should match the value of the `Name` attribute of the [`uap:AppService`](/uwp/schemas/appxpackage/uapmanifestschema/element-uap-appservice) element in the package.appxmanifest file. In this example, the `whenIsTripToDestination` and `cancelTripToDestination` commands are background tasks that specify the name of the app service as `AdventureWorksVoiceCommandService`.
-
-For more detail, see the [**VCD elements and attributes v1.2**](/uwp/schemas/voicecommands/voice-command-elements-and-attributes-1-2) reference.
-
-Example: A portion of the [**VCD**](/uwp/schemas/voicecommands/voice-command-elements-and-attributes-1-2) file that defines the `en-us` voice commands for the **Adventure Works** app.
-
-```xml
-
-
-
- Adventure Works
- Show trip to London
-
-
- Show trip to London
- show [my] trip to {destination}
- show [my] {builtin:AppName} trip to {destination}
- Showing trip to {destination}
-
-
-
-
- When is my trip to Las Vegas?
- when is [my] trip to {destination}
- when is [my] {builtin:AppName} trip to {destination}
- Looking for trip to {destination}
-
-
-
-
- Cancel my trip to Las Vegas
- cancel [my] trip to {destination}
- cancel [my] {builtin:AppName} trip to {destination}
- Cancelling trip to {destination}
-
-
-
-
- London
- Las Vegas
- Melbourne
- Yosemite National Park
-
-
-```
-
-## Install the VCD Commands
-
-Your app must run once to install the VCD.
-
->[!NOTE]
-> Voice command data is not preserved across app installations. To ensure the voice command data for your app remains intact, consider initializing your VCD file each time your app is launched or activated, or maintain a setting that indicates if the VCD is currently installed.
-
-In the `app.xaml.cs` file:
-
-1. Add the following using directive:
-
- ```csharp
- using Windows.Storage;
- ```
-
-2. Mark the `OnLaunched` method with the async modifier.
-
- ```csharp
- protected async override void OnLaunched(LaunchActivatedEventArgs e)
- ```
-
-3. Call the [`InstallCommandDefinitionsFromStorageFileAsync`](/uwp/api/Windows.ApplicationModel.VoiceCommands.VoiceCommandDefinitionManager) method in the [`OnLaunched`](/uwp/api/Windows.UI.Xaml.Application) handler to register the voice commands that should be recognized.
- Example: The Adventure Works app defines a [`StorageFile`](/uwp/api/Windows.Storage.StorageFile) object.
- Example: Call the [`GetFileAsync`](/uwp/api/Windows.Storage.StorageFolder) method to initialize the [`StorageFile`](/uwp/api/Windows.Storage.StorageFile) object with the `AdventureWorksCommands.xml` file.
- The [`StorageFile`](/uwp/api/Windows.Storage.StorageFile) object is then passed to [`InstallCommandDefinitionsFromStorageFileAsync`](/uwp/api/Windows.ApplicationModel.VoiceCommands.VoiceCommandDefinitionManager) method.
-
- ```csharp
- try {
- // Install the main VCD.
- StorageFile vcdStorageFile = await Package.Current.InstalledLocation.GetFileAsync(
- @"AdventureWorksCommands.xml"
- );
-
- await Windows.ApplicationModel.VoiceCommands.VoiceCommandDefinitionManager.InstallCommandDefinitionsFromStorageFileAsync(vcdStorageFile);
-
- // Update phrase list.
- ViewModel.ViewModelLocator locator = App.Current.Resources["ViewModelLocator"] as ViewModel.ViewModelLocator;
- if(locator != null) {
- await locator.TripViewModel.UpdateDestinationPhraseList();
- }
- }
- catch (Exception ex) {
- System.Diagnostics.Debug.WriteLine("Installing Voice Commands Failed: " + ex.ToString());
- }
- ```
-
-## Handle Activation
-
-Specify how your app responds to subsequent voice command activations.
-
->[!NOTE]
-> You must launch your app at least once after the voice command sets have been installed.
-
-1. Confirm that your app was activated by a voice command.
-
- Override the [`Application.OnActivated`](/uwp/api/Windows.UI.Xaml.Application) event and check whether [**IActivatedEventArgs**](/uwp/api/Windows.ApplicationModel.Activation.IActivatedEventArgs).[**Kind**](/uwp/api/Windows.ApplicationModel.Activation.IActivatedEventArgs) is [**VoiceCommand**](/uwp/api/Windows.ApplicationModel.Activation.ActivationKind).
-
-2. Determine the name of the command and what was spoken.
-
- Get a reference to a [`VoiceCommandActivatedEventArgs`](/uwp/api/Windows.ApplicationModel.Activation.VoiceCommandActivatedEventArgs) object from the [**IActivatedEventArgs**](/uwp/api/Windows.ApplicationModel.Activation.IActivatedEventArgs) and query the [`Result`](/uwp/api/Windows.ApplicationModel.Activation.VoiceCommandActivatedEventArgs) property for a [`SpeechRecognitionResult`](/uwp/api/Windows.Media.SpeechRecognition.SpeechRecognitionResult) object.
-
- To determine what the user said, check the value of [**Text**](/uwp/api/Windows.Media.SpeechRecognition.SpeechRecognitionResult) or the semantic properties of the recognized phrase in the [`SpeechRecognitionSemanticInterpretation`](/uwp/api/Windows.Media.SpeechRecognition.SpeechRecognitionSemanticInterpretation) dictionary.
-
-3. Take the appropriate action in your app, such as navigating to the desired page.
-
- >[!NOTE]
- > If you need to refer to your VCD, visit the [Edit the VCD File](#edit-the-vcd-file) section.
-
- After receiving the speech-recognition result for the voice command, you get the command name from the first value in the [`RulePath`](/uwp/api/Windows.Media.SpeechRecognition.SpeechRecognitionResult) array. Since the VCD file defines more than one possible voice command, you must verify that the value matches the command names in the VCD and take the appropriate action.
-
- The most common action for an application is to navigate to a page with content relevant to the context of the voice command.
- Example: Open the **TripPage** page and pass in the value of the voice command, how the command was input, and the recognized destination phrase (if applicable). Alternatively, the app may send a navigation parameter to the [**SpeechRecognitionResult**](/uwp/api/Windows.Media.SpeechRecognition.SpeechRecognitionResult) when navigating to the **TripPage** page.
-
- You are able to find out whether the voice command that launched your app was actually spoken, or whether it was typed in as text, from the [`SpeechRecognitionSemanticInterpretation.Properties`](/uwp/api/Windows.Media.SpeechRecognition.SpeechRecognitionSemanticInterpretation) dictionary using the **commandMode** key. The value of that key will be either `voice` or `text`. If the value of the key is `voice`, consider using speech synthesis ([**Windows.Media.SpeechSynthesis**](/uwp/api/Windows.Media.SpeechSynthesis)) in your app to provide the user with spoken feedback.
-
- Use the [**SpeechRecognitionSemanticInterpretation.Properties**](/uwp/api/Windows.Media.SpeechRecognition.SpeechRecognitionSemanticInterpretation) to find out the content spoken in the `PhraseList` or `PhraseTopic` constraints of a `ListenFor` element. The dictionary key is the value of the `Label` attribute of the `PhraseList` or `PhraseTopic` element.
- Example: The following code for How to access the value of **{destination}** phrase.
-
- ```csharp
- ///
- /// Entry point for an application activated by some means other than normal launching.
- /// This includes voice commands, URI, share target from another app, and so on.
- ///
- /// NOTE:
- /// A previous version of the VCD file might remain in place
- /// if you modify it and update the app through the store.
- /// Activations might include commands from older versions of your VCD.
- /// Try to handle these commands gracefully.
- ///
- /// Details about the activation method.
- protected override void OnActivated(IActivatedEventArgs args) {
- base.OnActivated(args);
-
- Type navigationToPageType;
- ViewModel.TripVoiceCommand? navigationCommand = null;
-
- // Voice command activation.
- if (args.Kind == ActivationKind.VoiceCommand) {
- // Event args may represent many different activation types.
- // Cast the args so that you only get useful parameters out.
- var commandArgs = args as VoiceCommandActivatedEventArgs;
-
- Windows.Media.SpeechRecognition.SpeechRecognitionResult speechRecognitionResult = commandArgs.Result;
-
- // Get the name of the voice command and the text spoken.
- // See VoiceCommands.xml for supported voice commands.
- string voiceCommandName = speechRecognitionResult.RulePath[0];
- string textSpoken = speechRecognitionResult.Text;
-
- // commandMode indicates whether the command was entered using speech or text.
- // Apps should respect text mode by providing silent (text) feedback.
- string commandMode = this.SemanticInterpretation("commandMode", speechRecognitionResult);
-
- switch (voiceCommandName) {
- case "showTripToDestination":
- // Access the value of {destination} in the voice command.
- string destination = this.SemanticInterpretation("destination", speechRecognitionResult);
-
- // Create a navigation command object to pass to the page.
- navigationCommand = new ViewModel.TripVoiceCommand(
- voiceCommandName,
- commandMode,
- textSpoken,
- destination
- );
-
- // Set the page to navigate to for this voice command.
- navigationToPageType = typeof(View.TripDetails);
- break;
- default:
- // If not able to determine what page to launch, then go to the default entry point.
- navigationToPageType = typeof(View.TripListView);
- break;
- }
- }
- // Protocol activation occurs when a card is selected within Cortana (using a background task).
- else if (args.Kind == ActivationKind.Protocol) {
- // Extract the launch context. In this case, use the destination from the phrase set (passed
- // along in the background task inside Cortana), which makes no attempt to be unique. A unique id or
- // identifier is ideal for more complex scenarios. The destination page is left to check if the
- // destination trip still exists, and navigate back to the trip list if it does not.
- var commandArgs = args as ProtocolActivatedEventArgs;
- Windows.Foundation.WwwFormUrlDecoder decoder = new Windows.Foundation.WwwFormUrlDecoder(commandArgs.Uri.Query);
- var destination = decoder.GetFirstValueByName("LaunchContext");
-
- navigationCommand = new ViewModel.TripVoiceCommand(
- "protocolLaunch",
- "text",
- "destination",
- destination
- );
-
- navigationToPageType = typeof(View.TripDetails);
- }
- else {
- // If launched using any other mechanism, fall back to the main page view.
- // Otherwise, the app will freeze at a splash screen.
- navigationToPageType = typeof(View.TripListView);
- }
-
- // Repeat the same basic initialization as OnLaunched() above, taking into account whether
- // or not the app is already active.
- Frame rootFrame = Window.Current.Content as Frame;
-
- // Do not repeat app initialization when the Window already has content,
- // just ensure that the window is active.
- if (rootFrame == null) {
- // Create a frame to act as the navigation context and navigate to the first page.
- rootFrame = new Frame();
- App.NavigationService = new NavigationService(rootFrame);
-
- rootFrame.NavigationFailed += OnNavigationFailed;
-
- // Place the frame in the current window.
- Window.Current.Content = rootFrame;
- }
-
- // Since the expectation is to always show a details page, navigate even if
- // a content frame is in place (unlike OnLaunched).
- // Navigate to either the main trip list page, or if a valid voice command
- // was provided, to the details page for that trip.
- rootFrame.Navigate(navigationToPageType, navigationCommand);
-
- // Ensure the current window is active
- Window.Current.Activate();
- }
-
- ///
- /// Returns the semantic interpretation of a speech result.
- /// Returns null if there is no interpretation for that key.
- ///
- /// The interpretation key.
- /// The speech recognition result to get the semantic interpretation from.
- ///
- private string SemanticInterpretation(string interpretationKey, SpeechRecognitionResult speechRecognitionResult) {
- return speechRecognitionResult.SemanticInterpretation.Properties[interpretationKey].FirstOrDefault();
- }
- ```
-
-## Handle the Voice Command in the App Service
-
-Process the voice command in the app service.
-
-1. Add the following using directives to your voice command service file.
- Example: `AdventureWorksVoiceCommandService.cs`.
-
- ```csharp
- using Windows.ApplicationModel.VoiceCommands;
- using Windows.ApplicationModel.Resources.Core;
- using Windows.ApplicationModel.AppService;
- ```
-
-2. Take a service deferral so your app service is not terminated while handling the voice command.
-3. Confirm that your background task is running as an app service activated by a voice command.
- 1. Cast the [**IBackgroundTaskInstance.TriggerDetails**](/uwp/api/Windows.ApplicationModel.Background.IBackgroundTaskInstance) to [**Windows.ApplicationModel.AppService.AppServiceTriggerDetails**](/uwp/api/Windows.ApplicationModel.AppService.AppServiceTriggerDetails).
- 2. Check that [**IBackgroundTaskInstance.TriggerDetails.Name**](/uwp/api/Windows.ApplicationModel.Background.IBackgroundTaskRegistration) is the name of the app service in the `Package.appxmanifest` file.
-4. Use [**IBackgroundTaskInstance.TriggerDetails**](/uwp/api/Windows.ApplicationModel.Background.IBackgroundTaskInstance) to create a [**VoiceCommandServiceConnection**](/uwp/api/Windows.ApplicationModel.VoiceCommands.VoiceCommandServiceConnection) to **Cortana** to retrieve the voice command.
-5. Register an event handler for [**VoiceCommandServiceConnection**](/uwp/api/Windows.ApplicationModel.VoiceCommands.VoiceCommandServiceConnection). [**VoiceCommandCompleted**](/uwp/api/Windows.ApplicationModel.VoiceCommands.VoiceCommandServiceConnection) to receive notification when the app service is closed due to a user cancellation.
-6. Register an event handler for the [**IBackgroundTaskInstance.Canceled**](/uwp/api/Windows.ApplicationModel.Background.IBackgroundTaskInstance) to receive notification when the app service is closed due to an unexpected failure.
-7. Determine the name of the command and what was spoken.
- 1. Use the [**VoiceCommand**](/uwp/api/Windows.ApplicationModel.VoiceCommands.VoiceCommand).[**CommandName**](/uwp/api/Windows.ApplicationModel.VoiceCommands.VoiceCommand) property to determine the name of the voice command.
- 2. To determine what the user said, check the value of [**Text**](/uwp/api/Windows.Media.SpeechRecognition.SpeechRecognitionResult) or the semantic properties of the recognized phrase in the [`SpeechRecognitionSemanticInterpretation`](/uwp/api/Windows.Media.SpeechRecognition.SpeechRecognitionSemanticInterpretation) dictionary.
-8. Take the appropriate action in your app service.
-9. Display and speak the feedback to the voice command using **Cortana**.
- 1. Determine the strings that you want **Cortana** to display and speak to the user in response to the voice command and create a [`VoiceCommandResponse`](/uwp/api/Windows.ApplicationModel.VoiceCommands.VoiceCommandResponse) object. For guidance on how to select the feedback strings that **Cortana** shows and speaks, see [Cortana design guidelines](cortana-design-guidelines.md).
- 2. Use the [**VoiceCommandServiceConnection**](/uwp/api/Windows.ApplicationModel.VoiceCommands.VoiceCommandServiceConnection) instance to report progress or completion to **Cortana** by calling [**ReportProgressAsync**](/uwp/api/Windows.ApplicationModel.VoiceCommands.VoiceCommandServiceConnection) or [**ReportSuccessAsync**](/uwp/api/Windows.ApplicationModel.VoiceCommands.VoiceCommandServiceConnection) with the `VoiceCommandServiceConnection` object.
-
- >[!NOTE]
- > If you need to refer to your VCD, visit the [Edit the VCD File](#edit-the-vcd-file) section.
-
- ```csharp
- public sealed class VoiceCommandService : IBackgroundTask {
- private BackgroundTaskDeferral serviceDeferral;
- VoiceCommandServiceConnection voiceServiceConnection;
-
- public async void Run(IBackgroundTaskInstance taskInstance) {
- //Take a service deferral so the service isn't terminated.
- this.serviceDeferral = taskInstance.GetDeferral();
-
- taskInstance.Canceled += OnTaskCanceled;
-
- var triggerDetails = taskInstance.TriggerDetails as AppServiceTriggerDetails;
-
- if (triggerDetails != null &&
- triggerDetails.Name == "AdventureWorksVoiceServiceEndpoint") {
- try {
- voiceServiceConnection =
- VoiceCommandServiceConnection.FromAppServiceTriggerDetails(
- triggerDetails);
- voiceServiceConnection.VoiceCommandCompleted +=
- VoiceCommandCompleted;
-
- VoiceCommand voiceCommand = await
- voiceServiceConnection.GetVoiceCommandAsync();
-
- switch (voiceCommand.CommandName) {
- case "whenIsTripToDestination":
- {
- var destination =
- voiceCommand.Properties["destination"][0];
- SendCompletionMessageForDestination(destination);
- break;
- }
-
- // As a last resort, launch the app in the foreground.
- default:
- LaunchAppInForeground();
- break;
- }
- }
- finally {
- if (this.serviceDeferral != null) {
- // Complete the service deferral.
- this.serviceDeferral.Complete();
- }
- }
- }
- }
-
- private void VoiceCommandCompleted(VoiceCommandServiceConnection sender,
- VoiceCommandCompletedEventArgs args) {
- if (this.serviceDeferral != null) {
- // Insert your code here.
- // Complete the service deferral.
- this.serviceDeferral.Complete();
- }
- }
-
- private async void SendCompletionMessageForDestination(
- string destination) {
- // Take action and determine when the next trip to destination
- // Insert code here.
-
- // Replace the hardcoded strings used here with strings
- // appropriate for your application.
-
- // First, create the VoiceCommandUserMessage with the strings
- // that Cortana will show and speak.
- var userMessage = new VoiceCommandUserMessage();
- userMessage.DisplayMessage = "Here's your trip.";
- userMessage.SpokenMessage = "Your trip to Vegas is on August 3rd.";
-
- // Optionally, present visual information about the answer.
- // For this example, create a VoiceCommandContentTile with an
- // icon and a string.
- var destinationsContentTiles = new List();
-
- var destinationTile = new VoiceCommandContentTile();
- destinationTile.ContentTileType =
- VoiceCommandContentTileType.TitleWith68x68IconAndText;
- // The user taps on the visual content to launch the app.
- // Pass in a launch argument to enable the app to deep link to a
- // page relevant to the item displayed on the content tile.
- destinationTile.AppLaunchArgument =
- string.Format("destination={0}", "Las Vegas");
- destinationTile.Title = "Las Vegas";
- destinationTile.TextLine1 = "August 3rd 2015";
- destinationsContentTiles.Add(destinationTile);
-
- // Create the VoiceCommandResponse from the userMessage and list
- // of content tiles.
- var response = VoiceCommandResponse.CreateResponse(
- userMessage, destinationsContentTiles);
-
- // Cortana displays a "Go to app_name" link that the user
- // taps to launch the app.
- // Pass in a launch to enable the app to deep link to a page
- // relevant to the voice command.
- response.AppLaunchArgument = string.Format(
- "destination={0}", "Las Vegas");
-
- // Ask Cortana to display the user message and content tile and
- // also speak the user message.
- await voiceServiceConnection.ReportSuccessAsync(response);
- }
-
- private async void LaunchAppInForeground() {
- var userMessage = new VoiceCommandUserMessage();
- userMessage.SpokenMessage = "Launching Adventure Works";
-
- var response = VoiceCommandResponse.CreateResponse(userMessage);
-
- // When launching the app in the foreground, pass an app
- // specific launch parameter to indicate what page to show.
- response.AppLaunchArgument = "showAllTrips=true";
-
- await voiceServiceConnection.RequestAppLaunchAsync(response);
- }
- }
- ```
-
-Once activated, the app service has 0.5 second to call [**ReportSuccessAsync**](/uwp/api/Windows.ApplicationModel.VoiceCommands.VoiceCommandServiceConnection). **Cortana** shows and says a feedback string.
-
->[!NOTE]
-> You are able to declare a **Feedback** string in the VCD file. The string does not affect the UI text displayed on the Cortana canvas, it only affects the text spoken by **Cortana**.
-
-If the app takes longer than 0.5 second to make the call, **Cortana** inserts a hand-off screen, as shown here. **Cortana** displays the hand-off screen until the application calls **ReportSuccessAsync**, or for up to 5 seconds. If the app service does not call **ReportSuccessAsync**, or any of the [`VoiceCommandServiceConnection`](/uwp/api/Windows.ApplicationModel.VoiceCommands.VoiceCommandServiceConnection) methods that provide **Cortana** with information, the user receives an error message and the app service is canceled.
-
-:::image type="content" source="images/cortana/cortana-backgroundapp-progress-result.png" alt-text="Screenshot of Cortana and a basic query with progress and result screens using the AdventureWorks app in the background":::
-
-## Related articles
-
-- [Cortana interactions in Windows apps](cortana-interactions.md)
-- [Activate a foreground app with voice commands through Cortana](cortana-launch-a-foreground-app-with-voice-commands.md)
-- [VCD elements and attributes v1.2](/uwp/schemas/voicecommands/voice-command-elements-and-attributes-1-2)
-- [Cortana design guidelines](cortana-design-guidelines.md)
-- [Cortana voice command sample](https://go.microsoft.com/fwlink/p/?LinkID=619899)
diff --git a/hub/apps/design/input/cortana-launch-a-foreground-app-with-voice-commands.md b/hub/apps/design/input/cortana-launch-a-foreground-app-with-voice-commands.md
deleted file mode 100644
index edd9096aa4..0000000000
--- a/hub/apps/design/input/cortana-launch-a-foreground-app-with-voice-commands.md
+++ /dev/null
@@ -1,387 +0,0 @@
----
-title: Activate a foreground app with voice commands through Cortana - Cortana UWP design and development
-description: Use voice commands to activate your app to the foreground and execute an action or command within the app.
-ms.assetid: e4bf3714-6f62-466f-9e7c-3b03ee86a117
-ms.date: 01/28/2021
-ms.topic: article
-keywords: cortana
----
-
-# Activate a foreground app with voice commands through Cortana
-
->[!WARNING]
-> This feature is no longer supported as of the Windows 10 May 2020 Update (version 2004, codename "20H1").
->
-> See [Cortana in Microsoft 365](/microsoft-365/admin/misc/cortana-integration) for how Cortana is transforming modern productivity experiences.
-
-In addition to using voice commands within **Cortana** to access system features, you can also extend **Cortana** with features and functionality from your app. Using voice commands, your app can be activated to the foreground and an action or command executed within the app.
-
-> [!NOTE]
-> **Important APIs**
->
-> - [**Windows.ApplicationModel.VoiceCommands**](/uwp/api/Windows.ApplicationModel.VoiceCommands)
-> - [**VCD elements and attributes v1.2**](/uwp/schemas/voicecommands/voice-command-elements-and-attributes-1-2)
-
-When an app handles a voice command in the foreground, it takes focus and Cortana is dismissed. If you prefer, you can activate your app and execute a command as a background task. In this case, Cortana retains focus and your app returns all feedback and results through the **Cortana** canvas and the **Cortana** voice.
-
-Voice commands that require additional context or user input (such as sending a message to a specific contact) are best handled in a foreground app, while basic commands (such as listing upcoming trips) can be handled in **Cortana** through a background app.
-
-If you want to activate an app in the background using voice commands, see [Activate a background app in Cortana using voice commands](cortana-launch-a-background-app-with-voice-commands.md).
-
-> [!NOTE]
-> A voice command is a single utterance with a specific intent, defined in a Voice Command Definition (VCD) file, directed at an installed app via **Cortana**.
->
-> A VCD file defines one or more voice commands, each with a unique intent.
->
-> Voice command definitions can vary in complexity. They can support anything from a single, constrained utterance to a collection of more flexible, natural language utterances, all denoting the same intent.
-
-To demonstrate foreground app features, we'll use a trip planning and management app named **Adventure Works** from the [Cortana voice command sample](https://go.microsoft.com/fwlink/p/?LinkID=619899).
-
-To create a new **Adventure Works** trip without **Cortana**, a user would launch the app and navigate to the **New trip** page. To view an existing trip, a user would launch the app, navigate to the **Upcoming trips** page, and select the trip.
-
-Using voice commands through **Cortana**, the user can instead just say, "Adventure Works add a trip" or "Add a trip on Adventure Works" to launch the app and navigate to the **New trip** page. In turn, saying "Adventure Works, show my trip to London" will launch the app and navigate to the **Trip** detail page, shown here.
-
-:::image type="content" source="images/cortana/cortana-foreground-with-adventureworks.png" alt-text="Screenshot of Cortana launching foreground app":::
-
-These are the basic steps to add voice-command functionality and integrate Cortana with your app using speech or keyboard input:
-
-1. Create a VCD file. This is an XML document that defines all the spoken commands that the user can say to initiate actions or invoke commands when activating your app. See [**VCD elements and attributes v1.2**](/uwp/schemas/voicecommands/voice-command-elements-and-attributes-1-2).
-2. Register the command sets in the VCD file when the app is launched.
-3. Handle the activation-by-voice-command, navigation within the app, and execution of the command.
-
-> [!TIP]
-> **Prerequisites**
->
-> If you're new to developing Universal Windows Platform (UWP) apps, have a look through these topics to get familiar with the technologies discussed here.
->
-> - [Create your first app](/windows/uwp/get-started/your-first-app)
-> - Learn about events with [Events and routed events overview](/windows/uwp/xaml-platform/events-and-routed-events-overview)
->
-> **User experience guidelines**
->
-> See [Cortana design guidelines](cortana-design-guidelines.md) for info about how to integrate your app with **Cortana** and [Speech interactions](speech-interactions.md) for helpful tips on designing a useful and engaging speech-enabled app.
-
-## Create a new solution with project in Visual Studio
-
-1. Launch Microsoft Visual Studio 2015.
-
- The Visual Studio 2015 Start page appears.
-
-2. On the **File** menu, select **New** > **Project**.
-
- The **New Project** dialog appears. The left pane of the dialog lets you select the type of templates to display.
-
-3. In the left pane, expand **Installed > Templates > Visual C\# > Windows**, then pick the **Universal** template group. The dialog's center pane displays a list of project templates for Universal Windows Platform (UWP) apps.
-4. In the center pane, select the **Blank App (Universal Windows)** template.
-
- The **Blank App** template creates a minimal UWP app that compiles and runs, but contains no user-interface controls or data. You add controls to the app over the course of this tutorial.
-
-5. In the **Name** text box, type your project name. For this example, we use "AdventureWorks".
-6. Click **OK** to create the project.
-
- Microsoft Visual Studio creates your project and displays it in the **Solution Explorer**.
-
-## Add image assets to project and specify them in the app manifest
-
-UWP apps can automatically select the most appropriate images based on specific settings and device capabilities (high contrast, effective pixels, locale, and so on). All you need to do is provide the images and ensure you use the appropriate naming convention and folder organization within the app project for the different resource versions. If you don't provide the recommended resource versions, accessibility, localization, and image quality can suffer, depending on the user's preferences, abilities, device type, and location.
-
-For more detail on image resources for high contrast and scale factors, see [Guidelines for tile and icon assets](/windows/uwp/app-resources/images-tailored-for-scale-theme-contrast).
-
-You name resources using qualifiers. Resource qualifiers are folder and filename modifiers that identify the context in which a particular version of a resource should be used.
-
-The standard naming convention is `foldername/qualifiername-value[_qualifiername-value]/filename.qualifiername-value[_qualifiername-value].ext`. For example, `images/logo.scale-100_contrast-white.png`, which can be referred to in code using just the root folder and the filename: `images/logo.png`. See [How to name resources using qualifiers](/previous-versions/windows/apps/hh965324(v=win.10)).
-
-We recommend that you mark the default language on string resource files (such as `en-US\resources.resw`) and the default scale factor on images (such as `logo.scale-100.png`), even if you do not currently plan to provide localized or multiple resolution resources. However, at a minimum, we recommend that you provide assets for 100, 200, and 400 scale factors.
-
-> [!IMPORTANT]
-> The app icon used in the title area of the **Cortana** canvas is the Square44x44Logo icon specified in the "Package.appxmanifest" file.
-
-## Create a VCD file
-
-1. In Visual Studio, right-click your primary project name, select **Add > New Item**. Add an **XML File**.
-2. Type a name for the [**VCD**](/uwp/schemas/voicecommands/voice-command-elements-and-attributes-1-2) file (for this example, "AdventureWorksCommands.xml"), and click Add.
-3. In **Solution Explorer**, select the [**VCD**](/uwp/schemas/voicecommands/voice-command-elements-and-attributes-1-2) file.
-4. In the **Properties** window, set **Build action** to **Content**, and then set **Copy to output directory** to **Copy if newer**.
-
-## Edit the VCD file
-
-Add a **VoiceCommands** element with an **xmlns** attribute pointing to `https://schemas.microsoft.com/voicecommands/1.2`.
-
-1. For each language supported by your app, create a [**CommandSet**](/previous-versions/windows/dn722331(v=win.10)) element that contains the voice commands supported by your app.
-
- You can declare multiple [**CommandSet**](/previous-versions/windows/dn722331(v=win.10)) elements, each with a different [**xml:lang**](/previous-versions/windows/dn722331(v=win.10)) attribute so your app to be used in different markets. For example, an app for the United States might have a [**CommandSet**](/previous-versions/windows/dn722331(v=win.10)) for English and a [**CommandSet**](/previous-versions/windows/dn722331(v=win.10)) for Spanish.
-
- > [!CAUTION]
- > To activate an app and initiate an action using a voice command, the app must register a VCD file that contains a [**CommandSet**](/previous-versions/windows/dn722331(v=win.10)) with a language that matches the speech language selected by the user for their device. The speech language is located in **Settings > System > Speech > Speech Language**.
-
-2. Add a **Command** element for each command you want to support. Each **Command** declared in a [**VCD**](/uwp/schemas/voicecommands/voice-command-elements-and-attributes-1-2) file must include the following information:
-
- - An **AppName** attribute that your application uses to identify the voice command at runtime.
- - An **Example** element that contains a phrase describing how a user can invoke the command. **Cortana** shows this example when the user says "What can I say?", "Help", or they tap **See more**.
- - A **ListenFor** element that contains the words or phrases that your app recognizes as a command. Each **ListenFor** element can contain references to one or more **PhraseList** elements that contain specific words relevant to the command.
-
-> [!NOTE]
-> **ListenFor** elements cannot be programmatically modified. However, **PhraseList** elements associated with **ListenFor** elements can be programmatically modified. Applications should modify the content of the **PhraseList** at runtime based on the data set generated as the user uses the app. See [Dynamically modify Cortana VCD phrase lists](cortana-dynamically-modify-voice-command-definition-vcd-phrase-lists.md).
-
-A **Feedback** element that contains the text for **Cortana** to display and speak as the application is launched.
-
-A **Navigate** element indicates that the voice command activates the app to the foreground. In this example, the `showTripToDestination` command is a foreground task.
-
-A **VoiceCommandService** element indicates that the voice command activates the app in the background. The value of the **Target** attribute of this element should match the value of the **Name** attribute of the [**uap:AppService**](/uwp/schemas/appxpackage/uapmanifestschema/element-uap-appservice) element in the package.appxmanifest file. In this example, the `whenIsTripToDestination` and `cancelTripToDestination` commands are background tasks that specify the name of the app service as "AdventureWorksVoiceCommandService".
-
-For more detail, see the [**VCD elements and attributes v1.2**](/uwp/schemas/voicecommands/voice-command-elements-and-attributes-1-2) reference.
-
-Here's a portion of the [**VCD**](/uwp/schemas/voicecommands/voice-command-elements-and-attributes-1-2) file that defines the en-us voice commands for the **Adventure Works** app.
-
-```xml
-
-
-
- Adventure Works
- Show trip to London
-
-
- Show trip to London
- show [my] trip to {destination}
- show [my] {builtin:AppName} trip to {destination}
- Showing trip to {destination}
-
-
-
-
- When is my trip to Las Vegas?
- when is [my] trip to {destination}
- when is [my] {builtin:AppName} trip to {destination}
- Looking for trip to {destination}
-
-
-
-
- Cancel my trip to Las Vegas
- cancel [my] trip to {destination}
- cancel [my] {builtin:AppName} trip to {destination}
- Cancelling trip to {destination}
-
-
-
-
- London
- Las Vegas
- Melbourne
- Yosemite National Park
-
-
-```
-
-## Install the VCD commands
-
-Your app must run once to install the VCD.
-
-> [!NOTE]
-> Voice command data is not preserved across app installations. To ensure the voice command data for your app remains intact, consider initializing your VCD file each time your app is launched or activated, or maintain a setting that indicates if the VCD is currently installed.
-
-In the "app.xaml.cs" file:
-
-1. Add the following using directive:
-
- ```csharp
- using Windows.Storage;
- ```
-
-1. Mark the "OnLaunched" method with the async modifier.
-
- ```csharp
- protected async override void OnLaunched(LaunchActivatedEventArgs e)
- ```
-
-1. Call [**InstallCommandDefinitionsFromStorageFileAsync**](/uwp/api/Windows.ApplicationModel.VoiceCommands.VoiceCommandDefinitionManager) in the [**OnLaunched**](/uwp/api/Windows.UI.Xaml.Application) handler to register the voice commands that the system should recognize.
-
- In the Adventure Works sample, we first define a [**StorageFile**](/uwp/api/Windows.Storage.StorageFile) object.
-
- We then call [**GetFileAsync**](/uwp/api/Windows.Storage.StorageFolder) to initialize it with our "AdventureWorksCommands.xml" file.
-
- This [**StorageFile**](/uwp/api/Windows.Storage.StorageFile) object is then passed to [**InstallCommandDefinitionsFromStorageFileAsync**](/uwp/api/Windows.ApplicationModel.VoiceCommands.VoiceCommandDefinitionManager).
-
-```csharp
-try
-{
- // Install the main VCD.
- StorageFile vcdStorageFile =
- await Package.Current.InstalledLocation.GetFileAsync(
- @"AdventureWorksCommands.xml");
-
- await Windows.ApplicationModel.VoiceCommands.VoiceCommandDefinitionManager.
-InstallCommandDefinitionsFromStorageFileAsync(vcdStorageFile);
-
- // Update phrase list.
- ViewModel.ViewModelLocator locator = App.Current.Resources["ViewModelLocator"] as ViewModel.ViewModelLocator;
- if(locator != null)
- {
- await locator.TripViewModel.UpdateDestinationPhraseList();
- }
-}
-catch (Exception ex)
-{
- System.Diagnostics.Debug.WriteLine("Installing Voice Commands Failed: " + ex.ToString());
-}
-```
-
-## Handle activation and execute voice commands
-
-Specify how your app responds to subsequent voice command activations (after it has been launched at least once and the voice command sets have been installed).
-
-1. Confirm that your app was activated by a voice command.
-
- Override the [**Application.OnActivated**](/uwp/api/Windows.UI.Xaml.Application) event and check whether [**IActivatedEventArgs**](/uwp/api/Windows.ApplicationModel.Activation.IActivatedEventArgs).[**Kind**](/uwp/api/Windows.ApplicationModel.Activation.IActivatedEventArgs) is [**VoiceCommand**](/uwp/api/Windows.ApplicationModel.Activation.ActivationKind).
-
-2. Determine the name of the command and what was spoken.
-
- Get a reference to a [**VoiceCommandActivatedEventArgs**](/uwp/api/Windows.ApplicationModel.Activation.VoiceCommandActivatedEventArgs) object from the [**IActivatedEventArgs**](/uwp/api/Windows.ApplicationModel.Activation.IActivatedEventArgs) and query the [**Result**](/uwp/api/Windows.ApplicationModel.Activation.VoiceCommandActivatedEventArgs) property for a [**SpeechRecognitionResult**](/uwp/api/Windows.Media.SpeechRecognition.SpeechRecognitionResult) object.
-
- To determine what the user said, check the value of [**Text**](/uwp/api/Windows.Media.SpeechRecognition.SpeechRecognitionResult) or the semantic properties of the recognized phrase in the [**SpeechRecognitionSemanticInterpretation**](/uwp/api/Windows.Media.SpeechRecognition.SpeechRecognitionSemanticInterpretation) dictionary.
-
-3. Take the appropriate action in your app, such as navigating to the desired page.
-
-For this example, we refer back to the VCD in Step 3: Edit the VCD file.
-
-Once we get the speech-recognition result for the voice command, we get the command name from the first value in the [**RulePath**](/uwp/api/Windows.Media.SpeechRecognition.SpeechRecognitionResult) array. As the VCD file defined more than one possible voice command, we need to compare the value against the command names in the VCD and take the appropriate action.
-
-The most common action an application can take is to navigate to a page with content relevant to the context of the voice command. For this example, we navigate to a **TripPage** page and pass in the value of the voice command, how the command was input, and the recognized "destination" phrase (if applicable). Alternatively, the app could send a navigation parameter to the [**SpeechRecognitionResult**](/uwp/api/Windows.Media.SpeechRecognition.SpeechRecognitionResult) when navigating to the page.
-
-You can find out whether the voice command that launched your app was actually spoken, or whether it was typed in as text, from the [**SpeechRecognitionSemanticInterpretation.Properties**](/uwp/api/Windows.Media.SpeechRecognition.SpeechRecognitionSemanticInterpretation) dictionary using the **commandMode** key. The value of that key will be either "voice" or "text". If the value of the key is "voice", consider using speech synthesis ([**Windows.Media.SpeechSynthesis**](/uwp/api/Windows.Media.SpeechSynthesis)) in your app to provide the user with spoken feedback.
-
-Use the [**SpeechRecognitionSemanticInterpretation.Properties**](/uwp/api/Windows.Media.SpeechRecognition.SpeechRecognitionSemanticInterpretation) to find out the content spoken in the **PhraseList** or **PhraseTopic** constraints of a **ListenFor** element. The dictionary key is the value of the **Label** attribute of the **PhraseList** or **PhraseTopic** element. Here, we show how to access the value of **{destination}** phrase.
-
-```csharp
-///
-/// Entry point for an application activated by some means other than normal launching.
-/// This includes voice commands, URI, share target from another app, and so on.
-///
-/// NOTE:
-/// A previous version of the VCD file might remain in place
-/// if you modify it and update the app through the store.
-/// Activations might include commands from older versions of your VCD.
-/// Try to handle these commands gracefully.
-///
-/// Details about the activation method.
-protected override void OnActivated(IActivatedEventArgs args)
-{
- base.OnActivated(args);
-
- Type navigationToPageType;
- ViewModel.TripVoiceCommand? navigationCommand = null;
-
- // Voice command activation.
- if (args.Kind == ActivationKind.VoiceCommand)
- {
- // Event args can represent many different activation types.
- // Cast it so we can get the parameters we care about out.
- var commandArgs = args as VoiceCommandActivatedEventArgs;
-
- Windows.Media.SpeechRecognition.SpeechRecognitionResult speechRecognitionResult = commandArgs.Result;
-
- // Get the name of the voice command and the text spoken.
- // See VoiceCommands.xml for supported voice commands.
- string voiceCommandName = speechRecognitionResult.RulePath[0];
- string textSpoken = speechRecognitionResult.Text;
-
- // commandMode indicates whether the command was entered using speech or text.
- // Apps should respect text mode by providing silent (text) feedback.
- string commandMode = this.SemanticInterpretation("commandMode", speechRecognitionResult);
-
- switch (voiceCommandName)
- {
- case "showTripToDestination":
- // Access the value of {destination} in the voice command.
- string destination = this.SemanticInterpretation("destination", speechRecognitionResult);
-
- // Create a navigation command object to pass to the page.
- navigationCommand = new ViewModel.TripVoiceCommand(
- voiceCommandName,
- commandMode,
- textSpoken,
- destination);
-
- // Set the page to navigate to for this voice command.
- navigationToPageType = typeof(View.TripDetails);
- break;
- default:
- // If we can't determine what page to launch, go to the default entry point.
- navigationToPageType = typeof(View.TripListView);
- break;
- }
- }
- // Protocol activation occurs when a card is clicked within Cortana (using a background task).
- else if (args.Kind == ActivationKind.Protocol)
- {
- // Extract the launch context. In this case, we're just using the destination from the phrase set (passed
- // along in the background task inside Cortana), which makes no attempt to be unique. A unique id or
- // identifier is ideal for more complex scenarios. We let the destination page check if the
- // destination trip still exists, and navigate back to the trip list if it doesn't.
- var commandArgs = args as ProtocolActivatedEventArgs;
- Windows.Foundation.WwwFormUrlDecoder decoder = new Windows.Foundation.WwwFormUrlDecoder(commandArgs.Uri.Query);
- var destination = decoder.GetFirstValueByName("LaunchContext");
-
- navigationCommand = new ViewModel.TripVoiceCommand(
- "protocolLaunch",
- "text",
- "destination",
- destination);
-
- navigationToPageType = typeof(View.TripDetails);
- }
- else
- {
- // If we were launched via any other mechanism, fall back to the main page view.
- // Otherwise, we'll hang at a splash screen.
- navigationToPageType = typeof(View.TripListView);
- }
-
- // Repeat the same basic initialization as OnLaunched() above, taking into account whether
- // or not the app is already active.
- Frame rootFrame = Window.Current.Content as Frame;
-
- // Do not repeat app initialization when the Window already has content,
- // just ensure that the window is active.
- if (rootFrame == null)
- {
- // Create a frame to act as the navigation context and navigate to the first page.
- rootFrame = new Frame();
- App.NavigationService = new NavigationService(rootFrame);
-
- rootFrame.NavigationFailed += OnNavigationFailed;
-
- // Place the frame in the current window.
- Window.Current.Content = rootFrame;
- }
-
- // Since we're expecting to always show a details page, navigate even if
- // a content frame is in place (unlike OnLaunched).
- // Navigate to either the main trip list page, or if a valid voice command
- // was provided, to the details page for that trip.
- rootFrame.Navigate(navigationToPageType, navigationCommand);
-
- // Ensure the current window is active
- Window.Current.Activate();
-}
-
-///
-/// Returns the semantic interpretation of a speech result.
-/// Returns null if there is no interpretation for that key.
-///
-/// The interpretation key.
-/// The speech recognition result to get the semantic interpretation from.
-///
-private string SemanticInterpretation(string interpretationKey, SpeechRecognitionResult speechRecognitionResult)
-{
- return speechRecognitionResult.SemanticInterpretation.Properties[interpretationKey].FirstOrDefault();
-}
-```
-
-## Related articles
-
-- [Cortana interactions in Windows apps](cortana-interactions.md)
-- [Activate a background app in Cortana using voice commands](cortana-launch-a-background-app-with-voice-commands.md)
-- [VCD elements and attributes v1.2](/uwp/schemas/voicecommands/voice-command-elements-and-attributes-1-2)
-- [Cortana design guidelines](cortana-design-guidelines.md)
-- [Cortana voice command sample](https://go.microsoft.com/fwlink/p/?LinkID=619899)
diff --git a/hub/apps/design/input/cortana-support-natural-language-voice-commands.md b/hub/apps/design/input/cortana-support-natural-language-voice-commands.md
deleted file mode 100644
index 7385f97ddb..0000000000
--- a/hub/apps/design/input/cortana-support-natural-language-voice-commands.md
+++ /dev/null
@@ -1,207 +0,0 @@
----
-title: Support more natural voice commands in Cortana - Cortana UWP design and development
-description: Extend Cortana with more flexible and natural voice commands that let a user say your app's name anywhere in the command.
-author: kbridge
-label: Conceptual
-ms.assetid: c2959c1b-c2f2-4a8d-8f3e-79585f69afcf
-ms.date: 01/28/2021
-ms.topic: article
-keywords: cortana
----
-
-# Support natural language voice commands in Cortana
-
->[!WARNING]
-> This feature is no longer supported as of the Windows 10 May 2020 Update (version 2004, codename "20H1").
->
-> See [Cortana in Microsoft 365](/microsoft-365/admin/misc/cortana-integration) for how Cortana is transforming modern productivity experiences.
-
-Extend **Cortana** with more flexible and natural voice commands that let a user say your app's name anywhere in the command.
-
-> [!NOTE]
-> **Important APIs**
->
-> - [**Windows.ApplicationModel.VoiceCommands**](/uwp/api/Windows.ApplicationModel.VoiceCommands)
-> - [**VCD elements and attributes v1.2**](/uwp/schemas/voicecommands/voice-command-elements-and-attributes-1-2)
-
-Using voice commands to extend Cortana with functionality from your app requires the user to specify both the app and the command or function to execute. This is typically accomplished by announcing the app name at the beginning or the end of the voice command. For example, "Adventure Works, add a new trip to Las Vegas."
-
-However, specifying the application name in this way can sound awkward, stilted, or not even make sense. In many cases, being able to say the app name elsewhere in the command is more comfortable and natural, and helps make the interaction much more intuitive and engaging for the user. Our previous example, "Adventure Works, add a new trip to Las Vegas." could be rephrased as "Add a new Adventure Works trip to Las Vegas." or "Using Adventure Works, add a new trip to Las Vegas."
-
-You can set up your voice commands to support the app name as a:
-
-- Prefix - before the command phrase
-- Infix - within the command phrase
-- Suffix - after the command phrase
-
-> [!TIP]
-> **Prerequisites**
->
-> This topic builds on [Activate a background app in Cortana using voice commands](cortana-launch-a-background-app-with-voice-commands.md). We continue here to demonstrate features with a trip planning and management app named **Adventure Works**.
->
-> If you're new to developing Universal Windows Platform (UWP) apps, have a look through these topics to get familiar with the technologies discussed here.
->
-> - [Create your first app](/windows/uwp/get-started/your-first-app)
-> - Learn about events with [Events and routed events overview](/windows/uwp/xaml-platform/events-and-routed-events-overview)
->
-> **User experience guidelines**
->
-> See [Cortana design guidelines](cortana-design-guidelines.md) for info about how to integrate your app with **Cortana** and [Speech interactions](speech-interactions.md) for helpful tips on designing a useful and engaging speech-enabled app.
-
-## Specify an **AppName** element in the VCD
-
-The **AppName** element is used to specify a user-friendly name for an app in a voice command.
-
-```XML
-Adventure Works
-```
-
-## Specify where the app name can be spoken in the voice command
-
-The **ListenFor** element has a **RequireAppName** attribute that specifies where the app name can appear in the voice command. This attribute supports four values.
-
-1. **BeforePhrase**
-
- Default.
-
- Indicates that users must say your app name before the command phrase.
-
- Here, Cortana listens for "Adventure Works when is my trip to Las Vegas".
-
- ```xml
- show [my] trip to {destination}
- ```
-
-2. **AfterPhrase**
-
- Indicates that users must say your app name after the command phrase.
-
- A localized phrase list of prepositional conjunctions is provided by the system. This includes phrases such as, "using", "with "and "on".
-
- Here, Cortana listens for commands like "Show my next trip to Las Vegas on Adventure Works" and "Show my next trip to Las Vegas using Adventure Works".
-
- ```xml
- show [my] next trip to {destination}
- ```
-
-3. **BeforeOrAfterPhrase**
-
- Indicates that users must say your app name either before or after the command phrase.
-
- For the suffix version, a localized phrase list of prepositional conjunctions is provided by the system. This includes phrases such as, "using", "with "and "on".
-
- Here, Cortana listens for commands like "Adventure Works, show my next trip to Las Vegas" or "Show my next trip to Last Vegas on Adventure works".
-
- ``` xml
- show [my] next trip to {destination}
- ```
-
-4. **ExplicitlySpecified**
-
- Indicates that users must say your app name exactly where you specify in the command phrase. The user is not required to say the app name either before or after the phrase.
-
- You must explicitly reference your app name using the **{builtin:AppName}** tag.
-
- Here, Cortana listens for commands like "Adventure Works, show my next trip to Las Vegas" or "Show my next Adventure Works trip to Las Vegas".
-
- ```xml
- show [my] next {builtin:AppName} trip to {destination}
- ```
-
-## Special cases
-
-When you declare a **ListenFor** element where **RequireAppName** is either "AfterPhrase" or "ExplicitlySpecified", you must ensure certain requirements are met:
-
-1. **{builtin:AppName}** must appear once and only once when **RequireAppName** is "ExplicitlySpecified".
-
- With this value, the system cannot infer where the app name can appear in the voice command. You must explicitly specify the location.
-
-2. You cannot have a voice command begin with a **PhraseTopic** element, which is typically used for large vocabulary speech recognition. At least one word must precede it.
-
- This helps to minimize the chance that **Cortana** launches your app if a command contains your app name, or part of it, anywhere in the utterance.
-
- Here is an invalid declaration that could lead to **Cortana** launching the **Adventure Works** app if the user says something like "Show me reviews for Kinect Adventure works".
-
- ```xml
- {searchPhrase} {builtin:AppName}
- ```
-
-3. There must be at least two words in the **ListenFor** string besides your app name and references to **PhraseTopic** elements.
-
- Similar to case 2, you need to ensure your commands contain sufficient phonetic content to minimize the chances your app is launched unintentionally.
-
- This helps you set up your application for best possible success so your application does not get incorrectly launched when user says for example “Find Kinect Adventure works”.
-
- Here are invalid declarations that could lead to **Cortana** launching the **Adventure Works** app if the user says something like "Hey adventure works" or "Find Kinect adventure works".
-
- ```xml
- Hey {builtin:AppName}
- Find {searchPhrase} {builtin:AppName}
- ```
-
-## Remarks
-
-Supporting more variation in how a voice command can be uttered by a user in **Cortana** also increases the general usability of your app.
-
-Avoid having "Hey \[app name\]" as your **AppName**. Users are much more likely to say "Hey Cortana" to invoke Cortana through voice activation, and having "Hey \[app name\]" in the utterance does not sound natural. For example, "Hey Cortana, show my next trip to Las Vegas on Hey Adventure Works".
-
-Consider adding infix/suffix variations to your existing voice commands. As we've shown here, it doesn't require a lot of effort to add an additional attribute to your existing **ListenFor** elements and support suffix variants. It feels a lot more natural to say "Hey Cortana, show my next trip to Las Vegas on Adventure works" than "Hey Cortana, Adventure Works, show my next trip to Las Vegas".
-
-Consider using your app name as a prefix in cases where the voice command conflicts with existing **Cortana** functionality (calling, messaging, and so on). For example, "Adventure Works, message \[travel agent\] about Las Vegas trip".
-
-## Complete example
-
-Here is a VCD file that demonstrates various ways to provide more natural language voice commands.
-
-> [!NOTE]
-> It is valid to have multiple **ListenFor** elements, each with a different **RequireAppName** attribute value.
-
-```XML
-
-
-
- Adventure Works
- When is my trip to Las Vegas?
-
- When is my trip to Las Vegas?
-
- when is my] trip to {destination}
-
-
-
- show [my] next trip to {destination}
-
-
-
- show [my] next trip to {destination}
-
-
-
- show [my] next {builtin:AppName} trip to {destination}
-
- Looking for trip to {destination}
-
-
-
- Las Vegas
- Dallas
- New York
-
-
-
-
-```
-
-## Related articles
-
-- [Cortana interactions in Windows apps](cortana-interactions.md)
-- [Cortana design guidelines](cortana-design-guidelines.md)
-- [VCD elements and attributes v1.2](/uwp/schemas/voicecommands/voice-command-elements-and-attributes-1-2)
-- [Cortana voice command sample](https://go.microsoft.com/fwlink/p/?LinkID=619899)
diff --git a/hub/apps/design/input/drag-and-drop.md b/hub/apps/design/input/drag-and-drop.md
deleted file mode 100644
index f901bb1d07..0000000000
--- a/hub/apps/design/input/drag-and-drop.md
+++ /dev/null
@@ -1,122 +0,0 @@
----
-description: This article explains how to add dragging and dropping in your Windows app.
-title: Drag and drop
-ms.assetid: A15ED2F5-1649-4601-A761-0F6C707A8B7E
-ms.date: 09/24/2020
-ms.topic: article
-keywords: windows 10, uwp
-ms.localizationpriority: medium
----
-# Drag and drop
-
-Drag and drop is an intuitive way to transfer data within an application or between applications on the Windows desktop. Drag and drop lets the user transfer data between applications or within an application using a standard gesture (press-hold-and-pan with the finger or press-and-pan with a mouse or a stylus).
-
-> **Important APIs**: [CanDrag property](/uwp/api/windows.ui.xaml.uielement.candrag), [AllowDrop property](/uwp/api/windows.ui.xaml.uielement.allowdrop)
-
-The drag source, which is the application or area where the drag gesture is triggered, provides the data to be transferred by filling a data package object that can contain standard data formats, including text, RTF, HTML, bitmaps, storage items or custom data formats. The source also indicates the kind of operations it supports: copy, move or link. When the pointer is released, drop occurs. The drop target, which is the application or area underneath the pointer, processes the data package and returns the type of operation it performed.
-
-During drag and drop, the drag UI provides a visual indication of the type of drag-and-drop operation that’s taking place. This visual feedback is initially provided by the source but can be changed by the targets as the pointer moves over them.
-
-Modern drag and drop is available on all devices that support UWP. It allows data transfer between or within any kind of application, including Classic Windows apps, although this article focuses on the XAML API for modern drag and drop. Once implemented, drag and drop works seamlessly in all directions, including app-to-app, app-to-desktop, and desktop-to app.
-
-Here's an overview of what you need to do to enable drag and drop in your app:
-
-1. Enable dragging on an element by setting its **CanDrag** property to true.
-2. Build the data package. The system handles images and text automatically, but for other content, you'll need to handle the [**DragStarting**](/uwp/api/windows.ui.xaml.uielement.dragstarting) and [**DropCompleted**](/uwp/api/windows.ui.xaml.uielement.dropcompleted) events and use them to construct your own data package.
-3. Enable dropping by setting the **AllowDrop** property to **true** on all the elements that can receive dropped content.
-4. Handle the **DragOver** event to let the system know what type of drag operations the element can receive.
-5. Process the **Drop** event to receive the dropped content.
-
-
-
-## Enable dragging
-
-To enable dragging on an element, set its [**CanDrag**](/uwp/api/windows.ui.xaml.uielement.candrag) property to **true**. This make the element—and the elements it contains, in the case of collections like ListView—draggable.
-
-Be specific about what's draggable. Users won't want to drag everything in your app, only certain items, such as images or text.
-
-Here's how to set [**CanDrag**](/uwp/api/windows.ui.xaml.uielement.candrag).
-
-:::code language="xml" source="~/../snippets-windows/windows-uwp/design/input/drag_drop/cs/MainPage.xaml" id="SnippetDragArea":::
-
-You don't need to do any other work to allow dragging, unless you want to customize the UI (which is covered later in this article). Dropping requires a few more steps.
-
-## Construct a data package
-
-In most cases, the system will construct a data package for you. The system automatically handles:
-- Images
-- Text
-
-For other content, you'll need to handle the [**DragStarting**](/uwp/api/windows.ui.xaml.uielement.dragstarting) and [**DropCompleted**](/uwp/api/windows.ui.xaml.uielement.dropcompleted) events and use them to construct your own [DataPackage](/uwp/api/windows.applicationmodel.datatransfer.datapackage).
-
-## Enable dropping
-
-The following markup shows how to set a specific area of the app as valid for dropping by using the [**AllowDrop**](/uwp/api/windows.ui.xaml.uielement.allowdrop) in XAML. If a user tries to drop somewhere else, the system won't let them. If you want users to be able to drop items anywhere on your app, set the entire background as a drop target.
-
-:::code language="xml" source="~/../snippets-windows/windows-uwp/design/input/drag_drop/cs/MainPage.xaml" id="SnippetDropArea":::
-
-
-## Handle the DragOver event
-
-The [**DragOver**](/uwp/api/windows.ui.xaml.uielement.dragover) event fires when a user has dragged an item over your app, but not yet dropped it. In this handler, you need to specify what kind of operations your app supports by using the [**AcceptedOperation**](/uwp/api/windows.ui.xaml.drageventargs.acceptedoperation) property. Copy is the most common.
-
-:::code language="csharp" source="~/../snippets-windows/windows-uwp/design/input/drag_drop/cs/MainPage.xaml.cs" id="SnippetGrid_DragOver":::
-
-## Process the Drop event
-
-The [**Drop**](/uwp/api/windows.ui.xaml.uielement.drop) event occurs when the user releases items in a valid drop area. Process them by using the [**DataView**](/uwp/api/windows.ui.xaml.drageventargs.dataview) property.
-
-For simplicity in the example below, we'll assume the user dropped a single photo and access it directly. In reality, users can drop multiple items of varying formats simultaneously. Your app should handle this possibility by checking what types of files were dropped and how many there are, and process each accordingly. You should also consider notifying the user if they're trying to do something your app doesn't support.
-
-:::code language="csharp" source="~/../snippets-windows/windows-uwp/design/input/drag_drop/cs/MainPage.xaml.cs" id="SnippetGrid_Drop":::
-
-## Customize the UI
-
-The system provides a default UI for dragging and dropping. However, you can also choose to customize various parts of the UI by setting custom captions and glyphs, or by opting not to show a UI at all. To customize the UI, use the [**DragEventArgs.DragUIOverride**](/uwp/api/windows.ui.xaml.drageventargs.draguioverride) property.
-
-:::code language="csharp" source="~/../snippets-windows/windows-uwp/design/input/drag_drop/cs/MainPage.xaml.cs" id="SnippetGrid_DragOverCustom":::
-
-## Open a context menu on an item you can drag with touch
-
-When using touch, dragging a [**UIElement**](/uwp/api/Windows.UI.Xaml.UIElement) and opening its context menu share similar touch gestures; each begins with a press and hold. Here's how the system disambiguates between the two actions for elements in your app that support both:
-
-- If a user presses and holds an item and begins dragging it within 500 milliseconds, the item is dragged and the context menu is not shown.
-- If the user presses and holds but does not drag within 500 milliseconds, the context menu is opened.
-- After the context menu is open, if the user tries to drag the item (without lifting their finger), the context menu is dismissed and the drag will start.
-
-## Designate an item in a ListView or GridView as a folder
-
-You can specify a [**ListViewItem**](/uwp/api/Windows.UI.Xaml.Controls.ListViewItem) or [**GridViewItem**](/uwp/api/Windows.UI.Xaml.Controls.GridViewItem) as a folder. This is particularly useful for TreeView and File Explorer scenarios. To do so, explicitly set the [**AllowDrop**](/uwp/api/windows.ui.xaml.uielement.allowdrop) property to **True** on that item.
-
-The system will automatically show the appropriate animations for dropping into a folder versus a non-folder item. Your app code must continue to handle the [**Drop**](/uwp/api/windows.ui.xaml.uielement.drop) event on the folder item (as well as on the non-folder item) in order to update the data source and add the dropped item to the target folder.
-
-## Enable drag and drop reordering within ListViews
-
-[**ListView**](/uwp/api/Windows.UI.Xaml.Controls.ListView)s support drag-based reordering out of the box, using an API very similar to the **CanDrop** API described in this article. At minimum, you add the **AllowDrop** and **CanReorderItems** properties.
-
-See [**ListViewBase.CanReorderItems**](/uwp/api/windows.ui.xaml.controls.listviewbase.canreorderitems) for more information.
-
-## Implementing custom drag and drop
-
-The [UIElement](/uwp/api/windows.ui.xaml.uielement) class does most of the work of implementing drag-and-drop for you. But if you want, you can implement your own version by using the APIs in the [Windows.ApplicationModel.DataTransfer.DragDrop.Core namespace](/uwp/api/windows.applicationmodel.datatransfer.dragdrop.core).
-
-| Functionality | WinRT API |
-| --- | --- |
-| Enable dragging | [CoreDragOperation](/uwp/api/windows.applicationmodel.datatransfer.dragdrop.core.coredragoperation) |
-| Create a data package | [DataPackage](/uwp/api/windows.applicationmodel.datatransfer.datapackage) |
-| Hand off drag to the shell | [CoreDragOperation.StartAsync](/uwp/api/windows.applicationmodel.datatransfer.dragdrop.core.coredragoperation) |
-| Receive drop from the shell | [CoreDragDropManager](/uwp/api/windows.applicationmodel.datatransfer.dragdrop.core.coredragdropmanager) [ICoreDropOperationTarget](/uwp/api/windows.applicationmodel.datatransfer.dragdrop.core.icoredropoperationtarget) |
-
-## See also
-
-- [App-to-app communication](index.md)
-- [AllowDrop](/uwp/api/windows.ui.xaml.uielement.allowdrop)
-- [CanDrag](/uwp/api/windows.ui.xaml.uielement.candrag)
-- [DragOver](/uwp/api/windows.ui.xaml.uielement.dragover)
-- [AcceptedOperation](/uwp/api/windows.ui.xaml.drageventargs.acceptedoperation)
-- [DataView](/uwp/api/windows.ui.xaml.drageventargs.dataview)
-- [DragUIOverride](/uwp/api/windows.ui.xaml.drageventargs.draguioverride)
-- [Drop](/uwp/api/windows.ui.xaml.uielement.drop)
-- [IsDragSource](/uwp/api/windows.ui.xaml.controls.listviewbase.isdragsource)
-- [**DragStarting**](/uwp/api/windows.ui.xaml.uielement.dragstarting)
-- [**DropCompleted**](/uwp/api/windows.ui.xaml.uielement.dropcompleted)
diff --git a/hub/apps/design/input/images/cortana/cortana-backgroundapp-progress-result.png b/hub/apps/design/input/images/cortana/cortana-backgroundapp-progress-result.png
deleted file mode 100644
index ae81fd6baa..0000000000
Binary files a/hub/apps/design/input/images/cortana/cortana-backgroundapp-progress-result.png and /dev/null differ
diff --git a/hub/apps/design/input/images/cortana/cortana-backgroundapp-result.png b/hub/apps/design/input/images/cortana/cortana-backgroundapp-result.png
deleted file mode 100644
index ec76ebf1b7..0000000000
Binary files a/hub/apps/design/input/images/cortana/cortana-backgroundapp-result.png and /dev/null differ
diff --git a/hub/apps/design/input/images/cortana/cortana-completion-screen-upcomingtrip-small.png b/hub/apps/design/input/images/cortana/cortana-completion-screen-upcomingtrip-small.png
deleted file mode 100644
index 7b5348897a..0000000000
Binary files a/hub/apps/design/input/images/cortana/cortana-completion-screen-upcomingtrip-small.png and /dev/null differ
diff --git a/hub/apps/design/input/images/cortana/cortana-completion-screen.png b/hub/apps/design/input/images/cortana/cortana-completion-screen.png
deleted file mode 100644
index ab6cdb05e4..0000000000
Binary files a/hub/apps/design/input/images/cortana/cortana-completion-screen.png and /dev/null differ
diff --git a/hub/apps/design/input/images/cortana/cortana-confirmation-screen.png b/hub/apps/design/input/images/cortana/cortana-confirmation-screen.png
deleted file mode 100644
index ce3373ddb0..0000000000
Binary files a/hub/apps/design/input/images/cortana/cortana-confirmation-screen.png and /dev/null differ
diff --git a/hub/apps/design/input/images/cortana/cortana-disambiguation-screen.png b/hub/apps/design/input/images/cortana/cortana-disambiguation-screen.png
deleted file mode 100644
index 047e584b94..0000000000
Binary files a/hub/apps/design/input/images/cortana/cortana-disambiguation-screen.png and /dev/null differ
diff --git a/hub/apps/design/input/images/cortana/cortana-foreground-with-adventureworks.png b/hub/apps/design/input/images/cortana/cortana-foreground-with-adventureworks.png
deleted file mode 100644
index 46e3c371b6..0000000000
Binary files a/hub/apps/design/input/images/cortana/cortana-foreground-with-adventureworks.png and /dev/null differ
diff --git a/hub/apps/design/input/images/cortana/cortana-overview.png b/hub/apps/design/input/images/cortana/cortana-overview.png
deleted file mode 100644
index 3f29db56c7..0000000000
Binary files a/hub/apps/design/input/images/cortana/cortana-overview.png and /dev/null differ
diff --git a/hub/apps/design/input/images/cortana/cortana-progress-screen.png b/hub/apps/design/input/images/cortana/cortana-progress-screen.png
deleted file mode 100644
index 098dcaee9a..0000000000
Binary files a/hub/apps/design/input/images/cortana/cortana-progress-screen.png and /dev/null differ
diff --git a/hub/apps/design/input/images/cortana/e2e-canceltrip-completion.png b/hub/apps/design/input/images/cortana/e2e-canceltrip-completion.png
deleted file mode 100644
index 5be938ea4d..0000000000
Binary files a/hub/apps/design/input/images/cortana/e2e-canceltrip-completion.png and /dev/null differ
diff --git a/hub/apps/design/input/images/cortana/e2e-canceltrip-confirmation.png b/hub/apps/design/input/images/cortana/e2e-canceltrip-confirmation.png
deleted file mode 100644
index ce3373ddb0..0000000000
Binary files a/hub/apps/design/input/images/cortana/e2e-canceltrip-confirmation.png and /dev/null differ
diff --git a/hub/apps/design/input/images/cortana/e2e-canceltrip-error.png b/hub/apps/design/input/images/cortana/e2e-canceltrip-error.png
deleted file mode 100644
index 95714f51dc..0000000000
Binary files a/hub/apps/design/input/images/cortana/e2e-canceltrip-error.png and /dev/null differ
diff --git a/hub/apps/design/input/images/cortana/e2e-canceltrip-progress.png b/hub/apps/design/input/images/cortana/e2e-canceltrip-progress.png
deleted file mode 100644
index 098dcaee9a..0000000000
Binary files a/hub/apps/design/input/images/cortana/e2e-canceltrip-progress.png and /dev/null differ
diff --git a/hub/apps/design/input/images/cortana/e2e-canceltrip.png b/hub/apps/design/input/images/cortana/e2e-canceltrip.png
deleted file mode 100644
index 6f22edb5ca..0000000000
Binary files a/hub/apps/design/input/images/cortana/e2e-canceltrip.png and /dev/null differ
diff --git a/hub/apps/design/input/images/cortana/voicecommandcontenttiletype-titleonly-small.png b/hub/apps/design/input/images/cortana/voicecommandcontenttiletype-titleonly-small.png
deleted file mode 100644
index f145d4f0bf..0000000000
Binary files a/hub/apps/design/input/images/cortana/voicecommandcontenttiletype-titleonly-small.png and /dev/null differ
diff --git a/hub/apps/design/input/images/cortana/voicecommandcontenttiletype-titlewith280x140iconandtext-small.png b/hub/apps/design/input/images/cortana/voicecommandcontenttiletype-titlewith280x140iconandtext-small.png
deleted file mode 100644
index 3d98429aba..0000000000
Binary files a/hub/apps/design/input/images/cortana/voicecommandcontenttiletype-titlewith280x140iconandtext-small.png and /dev/null differ
diff --git a/hub/apps/design/input/images/cortana/voicecommandcontenttiletype-titlewith68x68iconandtext-small.png b/hub/apps/design/input/images/cortana/voicecommandcontenttiletype-titlewith68x68iconandtext-small.png
deleted file mode 100644
index a01928a663..0000000000
Binary files a/hub/apps/design/input/images/cortana/voicecommandcontenttiletype-titlewith68x68iconandtext-small.png and /dev/null differ
diff --git a/hub/apps/design/input/images/cortana/voicecommandcontenttiletype-titlewith68x92iconandtext-small.png b/hub/apps/design/input/images/cortana/voicecommandcontenttiletype-titlewith68x92iconandtext-small.png
deleted file mode 100644
index 59e36040fd..0000000000
Binary files a/hub/apps/design/input/images/cortana/voicecommandcontenttiletype-titlewith68x92iconandtext-small.png and /dev/null differ
diff --git a/hub/apps/design/input/images/cortana/voicecommandcontenttiletype-titlewithtext-small.png b/hub/apps/design/input/images/cortana/voicecommandcontenttiletype-titlewithtext-small.png
deleted file mode 100644
index 8d3ecda744..0000000000
Binary files a/hub/apps/design/input/images/cortana/voicecommandcontenttiletype-titlewithtext-small.png and /dev/null differ
diff --git a/hub/apps/design/input/index.md b/hub/apps/design/input/index.md
deleted file mode 100644
index f572858c45..0000000000
--- a/hub/apps/design/input/index.md
+++ /dev/null
@@ -1,229 +0,0 @@
----
-description: Learn how to customize your Universal Windows Platform (UWP) app for interaction with specific types of inputs including pen, Surface dial, and speech.
-title: Input and interactions
-keywords: app inputs, customize UWP application
-label: Input and interactions
-template: detail.hbs
-ms.date: 09/24/2020
-ms.topic: article
-ms.assetid: b771d452-c3ac-4d97-8482-eaf81bf34306
-ms.localizationpriority: medium
----
-
-# Input and interactions
-
-UWP apps automatically handle a wide variety of inputs and run on a variety of devices—there’s nothing extra you need to do to enable touch input, for example. But there are times when you might want to optimize your app for certain types of input or devices. For example, if you’re creating a painting app, you might want to customize the way you handle pen input.
-
-The design and coding instructions in this section help you customize your UWP app for specific types of inputs.
-
-:::row:::
- :::column:::
-
- Speech
- Cortana
- :::column-end:::
-:::row-end:::
-
-
-
-
-
diff --git a/hub/apps/design/input/input-method-editors.md b/hub/apps/design/input/input-method-editors.md
deleted file mode 100644
index 03c6bd8c16..0000000000
--- a/hub/apps/design/input/input-method-editors.md
+++ /dev/null
@@ -1,64 +0,0 @@
----
-description: An Input Method Editor (IME) is a software component that enables a user to input text in a language that can't be represented easily on a standard QWERTY keyboard.
-title: Input Method Editors (IME)
-label: Input Method Editors (IME)
-template: detail.hbs
-keywords: ime, input method editor, input, interaction
-ms.date: 07/24/2020
-ms.topic: article
-ms.localizationpriority: medium
----
-
-# Input Method Editors (IME)
-
-An Input Method Editor (IME) is a software component that enables a user to input text in a language that can't be represented easily on a standard QWERTY keyboard. This is typically due to the number of characters in the user's written language, such as the various East Asian languages.
-
-Instead of each single character appearing on a single keyboard key, a user types combinations of keys that are interpreted by the IME. The IME generates either the character that matches the set of key strokes or a list of candidate characters to choose from. The selected character is then inserted into the edit control that the user is interacting with.
-
-> [!NOTE]
-> IMEs can support both hardware keyboards and on-screen or touch keyboards.
-
-Your app doesn't need to interact directly with the IME. The IME is built into the system, just as the touch keyboard is. If your app has text input, and you intend to support text input in languages that require an IME, you should test the end-to-end customer experience for text entry. This lets you fix any issues, such as adjusting your UI so it isn't occluded by the touch keyboard or IME candidate window.
-
-## Creating an IME
-
-To enable a great input experience for all users, Microsoft produces IMEs that ship in-box for a variety of languages.
-
-In addition to the in-box IMEs, you can build your own custom IMEs that users can install and use just like an in-box IME.
-
-All IMEs run in the Windows system, which is hardened to stop malicious IMEs and to improve the security and user experience of all IMEs.
-
-Custom IMEs can link to the default touch keyboard and use its layout so that end users can use their IME with the touch keyboard. However, you cannot provide your own independent touch keyboard and certain functions of in-box IMEs for touch keyboards are not available to custom IMEs.
-
-## Requirements for IMEs
-
-A third-party IME must meet these requirements:
-
-- Must be digitally signed
-- Must be [Text Services Framework (TSF)](/windows/win32/tsf/text-services-framework) aware, with appropriate IME flags set correctly
-- Must follow the guidelines described in [Input Method Editor (IME) requirements](input-method-editor-requirements.md) and [Design and code Windows apps](../index.md)
-
-A third-party IME that doesn't meet these requirements is blocked from running.
-
-> [!NOTE]
-> Legacy custom IMEs can run in desktop apps, but are blocked in Windows apps.
-
-Also, Windows Defender removes malicious IMEs from the system. Because of this, it's important that you familiarize yourself with the IME coding requirements. For more info, see [Input Method Editor (IME) requirements](input-method-editor-requirements.md).
-
-## Design guidelines for IMEs
-
-Read the [Input Method Editor (IME) requirements](input-method-editor-requirements.md) for more details on best practices and design guidelines for IMEs. In general, all IME UIs need to:
-
-- Follow the UX guidelines for Windows Runtime apps
-- Avoid modal experiences and only show the IME window when needed
-- include icons that are black and white only
-
-## Related topics
-
-- [Input Method Editor (IME) requirements](input-method-editor-requirements.md)
-- [ITfFnGetPreferredTouchKeyboardLayout](/windows/win32/api/ctffunc/nn-ctffunc-itffngetpreferredtouchkeyboardlayout)
-- [ITfCompartmentEventSink](/windows/win32/api/msctf/nn-msctf-itfcompartmenteventsink)
-- [ITfThreadMgrEx::GetActiveFlags](/windows/win32/api/msctf/nf-msctf-itfthreadmgrex-getactiveflags)
-- [ITfContextView::GetWnd](/windows/win32/api/msctf/nf-msctf-itfcontextview-getwnd)
-- [TF_INPUTPROCESSORPROFILE](/windows/win32/api/msctf/ns-msctf-tf_inputprocessorprofile)
-- [SendInput](/windows/win32/api/winuser/nf-winuser-sendinput)
diff --git a/hub/apps/design/input/keyboard-events.md b/hub/apps/design/input/keyboard-events.md
deleted file mode 100644
index 3227130bed..0000000000
--- a/hub/apps/design/input/keyboard-events.md
+++ /dev/null
@@ -1,407 +0,0 @@
----
-description: Respond to keystroke actions from hardware or software keyboards in your apps using both keyboard and class event handlers.
-title: Keyboard events
-ms.assetid: ac500772-d6ed-4a3a-825b-210a9c3c8f59
-label: Keyboard events
-template: detail.hbs
-keywords: keyboard, gamepad, remote, accessibility, navigation, focus, text, input, user interactions, key up, key down
-ms.date: 07/09/2021
-ms.topic: article
-pm-contact: chigy
-design-contact: kimsea
-dev-contact: niallm
-doc-status: Published
-ms.localizationpriority: medium
----
-# Keyboard events
-
-## Keyboard events and focus
-
-The following keyboard events can occur for both hardware and touch keyboards.
-
-| Event | Description |
-|--------------------------------------------|--------------------------------|
-| [**KeyDown**](/uwp/api/windows.ui.xaml.uielement.keydown) | Occurs when a key is pressed. |
-| [**KeyUp**](/uwp/api/windows.ui.xaml.uielement.keyup) | Occurs when a key is released. |
-
-> [!IMPORTANT]
-> Some XAML controls handle input events internally. In these cases, it might appear that an input event doesn't occur because your event listener doesn't invoke the associated handler. Typically, this subset of keys is processed by the class handler to provide built in support of basic keyboard accessibility. For example, the [**Button**](/uwp/api/Windows.UI.Xaml.Controls.Button) class overrides the [**OnKeyDown**](/uwp/api/windows.ui.xaml.controls.control.onkeydown) events for both the Space key and the Enter key (as well as [**OnPointerPressed**](/uwp/api/windows.ui.xaml.controls.control.onpointerpressed)) and routes them to the [**Click**](/uwp/api/windows.ui.xaml.controls.primitives.buttonbase.click) event of the control. When a key press is handled by the control class, the [**KeyDown**](/uwp/api/windows.ui.xaml.uielement.keydown) and [**KeyUp**](/uwp/api/windows.ui.xaml.uielement.keyup) events are not raised.
-> This provides a built-in keyboard equivalent for invoking the button, similar to tapping it with a finger or clicking it with a mouse. Keys other than Space or Enter still fire [**KeyDown**](/uwp/api/windows.ui.xaml.uielement.keydown) and [**KeyUp**](/uwp/api/windows.ui.xaml.uielement.keyup) events. For more info about how class-based handling of events works (specifically, the "Input event handlers in controls" section), see [Events and routed events overview](/windows/uwp/xaml-platform/events-and-routed-events-overview).
-
-
-Controls in your UI generate keyboard events only when they have input focus. An individual control gains focus when the user clicks or taps directly on that control in the layout, or uses the Tab key to step into a tab sequence within the content area.
-
-You can also call a control's [**Focus**](/uwp/api/windows.ui.xaml.controls.control.focus) method to force focus. This is necessary when you implement shortcut keys, because keyboard focus is not set by default when your UI loads. For more info, see the **Shortcut keys example** later in this topic.
-
-For a control to receive input focus, it must be enabled, visible, and have [**IsTabStop**](/uwp/api/windows.ui.xaml.controls.control.istabstop) and [**HitTestVisible**](/uwp/api/windows.ui.xaml.uielement.ishittestvisible) property values of **true**. This is the default state for most controls. When a control has input focus, it can raise and respond to keyboard input events as described later in this topic. You can also respond to a control that is receiving or losing focus by handling the [**GotFocus**](/uwp/api/windows.ui.xaml.uielement.gotfocus) and [**LostFocus**](/uwp/api/windows.ui.xaml.uielement.lostfocus) events.
-
-By default, the tab sequence of controls is the order in which they appear in the Extensible Application Markup Language (XAML). However, you can modify this order by using the [**TabIndex**](/uwp/api/windows.ui.xaml.controls.control.tabindex) property. For more info, see [Implementing keyboard accessibility](/previous-versions/windows/apps/hh868161(v=win.10)).
-
-## Keyboard event handlers
-
-An input event handler implements a delegate that provides the following information:
-
-- The sender of the event. The sender reports the object where the event handler is attached.
-- Event data. For keyboard events, that data will be an instance of [**KeyRoutedEventArgs**](/uwp/api/Windows.UI.Xaml.Input.KeyRoutedEventArgs). The delegate for handlers is [**KeyEventHandler**](/uwp/api/windows.ui.xaml.input.keyeventhandler). The most relevant properties of **KeyRoutedEventArgs** for most handler scenarios are [**Key**](/uwp/api/windows.ui.xaml.input.keyroutedeventargs.key) and possibly [**KeyStatus**](/uwp/api/windows.ui.xaml.input.keyroutedeventargs.keystatus).
-- [**OriginalSource**](/uwp/api/windows.ui.xaml.routedeventargs.originalsource). Because the keyboard events are routed events, the event data provides **OriginalSource**. If you deliberately allow events to bubble up through an object tree, **OriginalSource** is sometimes the object of concern rather than sender. However, that depends on your design. For more information about how you might use **OriginalSource** rather than sender, see the "Keyboard Routed Events" section of this topic, or [Events and routed events overview](/windows/uwp/xaml-platform/events-and-routed-events-overview).
-
-
-### Attaching a keyboard event handler
-
-You can attach keyboard event-handler functions for any object that includes the event as a member. This includes any [**UIElement**](/uwp/api/Windows.UI.Xaml.UIElement) derived class. The following XAML example shows how to attach handlers for the [**KeyUp**](/uwp/api/windows.ui.xaml.uielement.keyup) event for a [**Grid**](/uwp/api/Windows.UI.Xaml.Controls.Grid).
-
-```xaml
-
- ...
-
-```
-
-You can also attach an event handler in code. For more info, see [Events and routed events overview](/windows/uwp/xaml-platform/events-and-routed-events-overview).
-
-### Defining a keyboard event handler
-
-The following example shows the incomplete event handler definition for the [**KeyUp**](/uwp/api/windows.ui.xaml.uielement.keyup) event handler that was attached in the preceding example.
-
-```csharp
-void Grid_KeyUp(object sender, KeyRoutedEventArgs e)
-{
- //handling code here
-}
-```
-
-```vb
-Private Sub Grid_KeyUp(ByVal sender As Object, ByVal e As KeyRoutedEventArgs)
- ' handling code here
-End Sub
-```
-
-```c++
-void MyProject::MainPage::Grid_KeyUp(
- Platform::Object^ sender,
- Windows::UI::Xaml::Input::KeyRoutedEventArgs^ e)
- {
- //handling code here
- }
-```
-
-### Using KeyRoutedEventArgs
-
-All keyboard events use [**KeyRoutedEventArgs**](/uwp/api/Windows.UI.Xaml.Input.KeyRoutedEventArgs) for event data, and **KeyRoutedEventArgs** contains the following properties:
-
-- [**Key**](/uwp/api/windows.ui.xaml.input.keyroutedeventargs.key)
-- [**KeyStatus**](/uwp/api/windows.ui.xaml.input.keyroutedeventargs.keystatus)
-- [**Handled**](/uwp/api/windows.ui.xaml.input.keyroutedeventargs.handled)
-- [**OriginalSource**](/uwp/api/windows.ui.xaml.routedeventargs.originalsource) (inherited from [**RoutedEventArgs**](/uwp/api/Windows.UI.Xaml.RoutedEventArgs))
-
-### Virtual keys
-
-The [**KeyDown**](/uwp/api/windows.ui.xaml.uielement.keydown) event is raised if a key is pressed. Likewise, [**KeyUp**](/uwp/api/windows.ui.xaml.uielement.keyup) is raised if a key is released. Usually, you listen to the events to process a specific key value. To determine which key is pressed or released, check the [**Key**](/uwp/api/windows.ui.xaml.input.keyroutedeventargs.key) value in the event data. **Key** returns a [**VirtualKey**](/uwp/api/Windows.System.VirtualKey) value. The **VirtualKey** enumeration includes all the supported keys.
-
-### Modifier keys
-
-Modifier keys are keys such as Ctrl or Shift that users typically press in combination with other keys. Your app can use these combinations as custom keyboard shortcuts to invoke app commands.
-
-> [!NOTE]
-> For built-in keyboard shortcuts, see [Access keys](access-keys.md) and [Keyboard accelerators](keyboard-accelerators.md).
-
-You can detect shortcut key combinations in the [**KeyDown**](/uwp/api/windows.ui.xaml.uielement.keydown) and [**KeyUp**](/uwp/api/windows.ui.xaml.uielement.keyup) event handlers. When a keyboard event occurs for a non-modifier key, you can then check whether a modifier key is in the pressed state.
-
-Alternatively, the [**GetKeyState()**](/uwp/api/windows.ui.core.corewindow.getkeystate) function of the [**CoreWindow**](/uwp/api/windows.ui.core.corewindow) (obtained through [**CoreWindow.GetForCurrentThread()**](/uwp/api/windows.ui.core.corewindow.getforcurrentthread)) can also be used to check modifier state when a non-modifier key is pressed.
-
-The following examples implement this second method while also including stub code for the first implementation.
-
-> [!NOTE]
-> The Alt key is represented by the **VirtualKey.Menu** value.
-
-### Shortcut keys example
-
-The following example demonstrates how to implement a set of custom shortcut keys. In this example, users can control media playback using Play, Pause, and Stop buttons or Ctrl+P, Ctrl+A, and Ctrl+S keyboard shortcuts. The button XAML shows the shortcuts by using tooltips and [**AutomationProperties**](/uwp/api/Windows.UI.Xaml.Automation.AutomationProperties) properties in the button labels. This self-documentation is important to increase the usability and accessibility of your app. For more info, see [Keyboard accessibility](../accessibility/keyboard-accessibility.md).
-
-Note also that the page sets input focus to itself when it is loaded. Without this step, no control has initial input focus, and the app does not raise input events until the user sets the input focus manually (for example, by tabbing to or clicking a control).
-
-```xaml
-
-
-
-
-
-
-
-
-
-
-
-
- Play
-
-
-
- Pause
-
-
-
- Stop
-
-
-
-
-
-```
-
-```c++
-//showing implementations but not header definitions
-void MainPage::OnNavigatedTo(NavigationEventArgs^ e)
-{
- (void) e; // Unused parameter
- this->Loaded+=ref new RoutedEventHandler(this,&MainPage::ProgrammaticFocus);
-}
-void MainPage::ProgrammaticFocus(Object^ sender, RoutedEventArgs^ e)
-{
- this->Focus(Windows::UI::Xaml::FocusState::Programmatic);
-}
-
-void KeyboardSupport::MainPage::MediaButton_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
-{
- FrameworkElement^ fe = safe_cast(sender);
- if (fe->Name == "PlayButton") {DemoMovie->Play();}
- if (fe->Name == "PauseButton") {DemoMovie->Pause();}
- if (fe->Name == "StopButton") {DemoMovie->Stop();}
-}
-
-
-bool KeyboardSupport::MainPage::IsCtrlKeyPressed()
-{
- auto ctrlState = CoreWindow::GetForCurrentThread()->GetKeyState(VirtualKey::Control);
- return (ctrlState & CoreVirtualKeyStates::Down) == CoreVirtualKeyStates::Down;
-}
-
-void KeyboardSupport::MainPage::Grid_KeyDown(Platform::Object^ sender, Windows::UI::Xaml::Input::KeyRoutedEventArgs^ e)
-{
- if (e->Key == VirtualKey::Control) isCtrlKeyPressed = true;
-}
-
-
-void KeyboardSupport::MainPage::Grid_KeyUp(Platform::Object^ sender, Windows::UI::Xaml::Input::KeyRoutedEventArgs^ e)
-{
- if (IsCtrlKeyPressed())
- {
- if (e->Key==VirtualKey::P) { DemoMovie->Play(); }
- if (e->Key==VirtualKey::A) { DemoMovie->Pause(); }
- if (e->Key==VirtualKey::S) { DemoMovie->Stop(); }
- }
-}
-```
-
-```csharp
-protected override void OnNavigatedTo(NavigationEventArgs e)
-{
- // Set the input focus to ensure that keyboard events are raised.
- this.Loaded += delegate { this.Focus(FocusState.Programmatic); };
-}
-
-private void MediaButton_Click(object sender, RoutedEventArgs e)
-{
- switch ((sender as Button).Name)
- {
- case "PlayButton": DemoMovie.Play(); break;
- case "PauseButton": DemoMovie.Pause(); break;
- case "StopButton": DemoMovie.Stop(); break;
- }
-}
-
-private static bool IsCtrlKeyPressed()
-{
- var ctrlState = CoreWindow.GetForCurrentThread().GetKeyState(VirtualKey.Control);
- return (ctrlState & CoreVirtualKeyStates.Down) == CoreVirtualKeyStates.Down;
-}
-
-private void Grid_KeyDown(object sender, KeyRoutedEventArgs e)
-{
- if (IsCtrlKeyPressed())
- {
- switch (e.Key)
- {
- case VirtualKey.P: DemoMovie.Play(); break;
- case VirtualKey.A: DemoMovie.Pause(); break;
- case VirtualKey.S: DemoMovie.Stop(); break;
- }
- }
-}
-```
-
-```VisualBasic
-Private isCtrlKeyPressed As Boolean
-Protected Overrides Sub OnNavigatedTo(e As Navigation.NavigationEventArgs)
-
-End Sub
-
-Private Function IsCtrlKeyPressed As Boolean
- Dim ctrlState As CoreVirtualKeyStates = CoreWindow.GetForCurrentThread().GetKeyState(VirtualKey.Control);
- Return (ctrlState & CoreVirtualKeyStates.Down) == CoreVirtualKeyStates.Down;
-End Function
-
-Private Sub Grid_KeyDown(sender As Object, e As KeyRoutedEventArgs)
- If IsCtrlKeyPressed() Then
- Select Case e.Key
- Case Windows.System.VirtualKey.P
- DemoMovie.Play()
- Case Windows.System.VirtualKey.A
- DemoMovie.Pause()
- Case Windows.System.VirtualKey.S
- DemoMovie.Stop()
- End Select
- End If
-End Sub
-
-Private Sub MediaButton_Click(sender As Object, e As RoutedEventArgs)
- Dim fe As FrameworkElement = CType(sender, FrameworkElement)
- Select Case fe.Name
- Case "PlayButton"
- DemoMovie.Play()
- Case "PauseButton"
- DemoMovie.Pause()
- Case "StopButton"
- DemoMovie.Stop()
- End Select
-End Sub
-```
-
-> [!NOTE]
-> Setting [**AutomationProperties.AcceleratorKey**](/dotnet/api/system.windows.automation.automationproperties.acceleratorkey) or [**AutomationProperties.AccessKey**](/dotnet/api/system.windows.automation.automationproperties.accesskey) in XAML provides string information, which documents the shortcut key for invoking that particular action. The information is captured by Microsoft UI Automation clients such as Narrator, and is typically provided directly to the user.
->
-> Setting **AutomationProperties.AcceleratorKey** or **AutomationProperties.AccessKey** does not have any action on its own. You will still need to attach handlers for [**KeyDown**](/uwp/api/windows.ui.xaml.uielement.keydown) or [**KeyUp**](/uwp/api/windows.ui.xaml.uielement.keyup) events in order to actually implement the keyboard shortcut behavior in your app. Also, the underline text decoration for an access key is not provided automatically. You must explicitly underline the text for the specific key in your mnemonic as inline [**Underline**](/uwp/api/Windows.UI.Xaml.Documents.Underline) formatting if you wish to show underlined text in the UI.
-
-
-
-## Keyboard routed events
-
-
-Certain events are routed events, including [**KeyDown**](/uwp/api/windows.ui.xaml.uielement.keydown) and [**KeyUp**](/uwp/api/windows.ui.xaml.uielement.keyup). Routed events use the bubbling routing strategy. The bubbling routing strategy means that an event originates from a child object and is then routed up to successive parent objects in the object tree. This presents another opportunity to handle the same event and interact with the same event data.
-
-Consider the following XAML example, which handles [**KeyUp**](/uwp/api/windows.ui.xaml.uielement.keyup) events for a [**Canvas**](/uwp/api/Windows.UI.Xaml.Controls.Canvas) and two [**Button**](/uwp/api/Windows.UI.Xaml.Controls.Button) objects. In this case, if you release a key while focus is held by either **Button** object, it raises the **KeyUp** event. The event is then bubbled up to the parent **Canvas**.
-
-```xaml
-
-
-
-
-
-```
-
-The following example shows how to implement the [**KeyUp**](/uwp/api/windows.ui.xaml.uielement.keyup) event handler for the corresponding XAML content in the preceding example.
-
-```csharp
-void StackPanel_KeyUp(object sender, KeyRoutedEventArgs e)
-{
- statusTextBlock.Text = String.Format(
- "The key {0} was pressed while focus was on {1}",
- e.Key.ToString(), (e.OriginalSource as FrameworkElement).Name);
-}
-```
-
-Notice the use of the [**OriginalSource**](/uwp/api/windows.ui.xaml.routedeventargs.originalsource) property in the preceding handler. Here, **OriginalSource** reports the object that raised the event. The object could not be the [**StackPanel**](/uwp/api/Windows.UI.Xaml.Controls.StackPanel) because the **StackPanel** is not a control and cannot have focus. Only one of the two buttons within the **StackPanel** could possibly have raised the event, but which one? You use **OriginalSource** to distinguish the actual event source object, if you are handling the event on a parent object.
-
-### The Handled property in event data
-
-Depending on your event handling strategy, you might want only one event handler to react to a bubbling event. For instance, if you have a specific [**KeyUp**](/uwp/api/windows.ui.xaml.uielement.keyup) handler attached to one of the [**Button**](/uwp/api/Windows.UI.Xaml.Controls.Button) controls, it would have the first opportunity to handle that event. In this case, you might not want the parent panel to also handle the event. For this scenario, you can use the [**Handled**](/uwp/api/windows.ui.xaml.input.keyroutedeventargs.handled) property in the event data.
-
-The purpose of the [**Handled**](/uwp/api/windows.ui.xaml.input.keyroutedeventargs.handled) property in a routed event data class is to report that another handler you registered earlier on the event route has already acted. This influences the behavior of the routed event system. When you set **Handled** to **true** in an event handler, that event stops routing and is not sent to successive parent elements.
-
-### AddHandler and already-handled keyboard events
-
-You can use a special technique for attaching handlers that can act on events that you already marked as handled. This technique uses the [**AddHandler**](/uwp/api/windows.ui.xaml.uielement.addhandler) method to register a handler, rather than using XAML attributes or language-specific syntax for adding handlers, such as += in C\#.
-
-A general limitation of this technique is that the **AddHandler** API takes a parameter of type [**RoutedEvent**](/uwp/api/Windows.UI.Xaml.RoutedEvent) idnentifying the routed event in question. Not all routed events provide a **RoutedEvent** identifier, and this consideration thus affects which routed events can still be handled in the [**Handled**](/uwp/api/windows.ui.xaml.input.keyroutedeventargs.handled) case. The [**KeyDown**](/uwp/api/windows.ui.xaml.uielement.keydown) and [**KeyUp**](/uwp/api/windows.ui.xaml.uielement.keyup) events have routed event identifiers ([**KeyDownEvent**](/uwp/api/windows.ui.xaml.uielement.keydownevent) and [**KeyUpEvent**](/uwp/api/windows.ui.xaml.uielement.keyupevent)) on [**UIElement**](/uwp/api/Windows.UI.Xaml.UIElement). However, other events such as [**TextBox.TextChanged**](/uwp/api/windows.ui.xaml.controls.textbox.textchanged) do not have routed event identifiers and thus cannot be used with the **AddHandler** technique.
-
-### Overriding keyboard events and behavior
-
-You can override key events for specific controls (such as [**GridView**](/uwp/api/Windows.UI.Xaml.Controls.GridView)) to provide consistent focus navigation for various input devices, including keyboard and gamepad.
-
-In the following example, we subclass the control and override the KeyDown behavior to move focus to the GridView content when any arrow key is pressed.
-
-```csharp
- public class CustomGridView : GridView
- {
- protected override void OnKeyDown(KeyRoutedEventArgs e)
- {
- // Override arrow key behaviors.
- if (e.Key != Windows.System.VirtualKey.Left && e.Key !=
- Windows.System.VirtualKey.Right && e.Key !=
- Windows.System.VirtualKey.Down && e.Key !=
- Windows.System.VirtualKey.Up)
- base.OnKeyDown(e);
- else
- FocusManager.TryMoveFocus(FocusNavigationDirection.Down);
- }
- }
-```
-
-> [!NOTE]
-> If using a GridView for layout only, consider using other controls such as [**ItemsControl**](/uwp/api/Windows.UI.Xaml.Controls.ItemsControl) with [**ItemsWrapGrid**](/uwp/api/Windows.UI.Xaml.Controls.ItemsWrapGrid).
-
-## Commanding
-
-A small number of UI elements provide built-in support for commanding. Commanding uses input-related routed events in its underlying implementation. It enables processing of related UI input, such as a certain pointer action or a specific accelerator key, by invoking a single command handler.
-
-If commanding is available for a UI element, consider using its commanding APIs instead of any discrete input events. For more info, see [**ButtonBase.Command**](/uwp/api/windows.ui.xaml.controls.primitives.buttonbase.command).
-
-You can also implement [**ICommand**](/uwp/api/Windows.UI.Xaml.Input.ICommand) to encapsulate command functionality that you invoke from ordinary event handlers. This enables you to use commanding even when there is no **Command** property available.
-
-## Text input and controls
-
-Certain controls react to keyboard events with their own handling. For instance, [**TextBox**](/uwp/api/Windows.UI.Xaml.Controls.TextBox) is a control that is designed to capture and then visually represent text that was entered by using the keyboard. It uses [**KeyUp**](/uwp/api/windows.ui.xaml.uielement.keyup) and [**KeyDown**](/uwp/api/windows.ui.xaml.uielement.keydown) in its own logic to capture keystrokes, then also raises its own [**TextChanged**](/uwp/api/windows.ui.xaml.controls.textbox.textchanged) event if the text actually changed.
-
-You can still generally add handlers for [**KeyUp**](/uwp/api/windows.ui.xaml.uielement.keyup) and [**KeyDown**](/uwp/api/windows.ui.xaml.uielement.keydown) to a [**TextBox**](/uwp/api/Windows.UI.Xaml.Controls.TextBox), or any related control that is intended to process text input. However, as part of its intended design, a control might not respond to all key values that are directed to it through key events. Behavior is specific to each control.
-
-As an example, [**ButtonBase**](/uwp/api/Windows.UI.Xaml.Controls.Primitives.ButtonBase) (the base class for [**Button**](/uwp/api/Windows.UI.Xaml.Controls.Button)) processes [**KeyUp**](/uwp/api/windows.ui.xaml.uielement.keyup) so that it can check for the Spacebar or Enter key. **ButtonBase** considers **KeyUp** equivalent to a mouse left button down for purposes of raising a [**Click**](/uwp/api/windows.ui.xaml.controls.primitives.buttonbase.click) event. This processing of the event is accomplished when **ButtonBase** overrides the virtual method [**OnKeyUp**](/uwp/api/windows.ui.xaml.controls.control.onkeyup). In its implementation, it sets [**Handled**](/uwp/api/windows.ui.xaml.input.keyroutedeventargs.handled) to **true**. The result is that any parent of a button that is listening for a key event, in the case of a Spacebar, would not receive the already-handled event for its own handlers.
-
-Another example is [**TextBox**](/uwp/api/Windows.UI.Xaml.Controls.TextBox). Some keys, such as the arrow keys, are not considered text by **TextBox** and are instead considered specific to the control UI behavior. The **TextBox** marks these event cases as handled.
-
-Custom controls can implement their own similar override behavior for key events by overriding [**OnKeyDown**](/uwp/api/windows.ui.xaml.controls.control.onkeydown) / [**OnKeyUp**](/uwp/api/windows.ui.xaml.controls.control.onkeyup). If your custom control processes specific accelerator keys, or has control or focus behavior that is similar to the scenario described for [**TextBox**](/uwp/api/Windows.UI.Xaml.Controls.TextBox), you should place this logic in your own **OnKeyDown** / **OnKeyUp** overrides.
-
-## The touch keyboard
-
-Text input controls provide automatic support for the touch keyboard. When the user sets the input focus to a text control by using touch input, the touch keyboard appears automatically. When the input focus is not on a text control, the touch keyboard is hidden.
-
-When the touch keyboard appears, it automatically repositions your UI to ensure that the focused element remains visible. This can cause other important areas of your UI to move off screen. However, you can disable the default behavior and make your own UI adjustments when the touch keyboard appears. For more info, see the [Touch keyboard sample](https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/TouchKeyboard).
-
-If you create a custom control that requires text input, but does not derive from a standard text input control, you can add touch keyboard support by implementing the correct UI Automation control patterns. For more info, see the [Touch keyboard sample](https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/TouchKeyboard).
-
-Key presses on the touch keyboard raise [**KeyDown**](/uwp/api/windows.ui.xaml.uielement.keydown) and [**KeyUp**](/uwp/api/windows.ui.xaml.uielement.keyup) events just like key presses on hardware keyboards. However, the touch keyboard will not raise input events for Ctrl+A, Ctrl+Z, Ctrl+X, Ctrl+C, and Ctrl+V, which are reserved for text manipulation in the input control.
-
-You can make it much faster and easier for users to enter data in your app by setting the input scope of the text control to match the kind of data you expect the user to enter. The input scope provides a hint at the type of text input expected by the control so the system can provide a specialized touch keyboard layout for the input type. For example, if a text box is used only to enter a 4-digit PIN, set the [**InputScope**](/uwp/api/windows.ui.xaml.controls.textbox.inputscope) property to [**Number**](/uwp/api/Windows.UI.Xaml.Input.InputScopeNameValue). This tells the system to show the numeric keypad layout, which makes it easier for the user to enter the PIN. For more detail, see [Use input scope to change the touch keyboard](./use-input-scope-to-change-the-touch-keyboard.md).
-
-## Related articles
-
-### Developers
-
-- [Keyboard interactions](keyboard-interactions.md)
-- [Identify input devices](identify-input-devices.md)
-- [Respond to the presence of the touch keyboard](respond-to-the-presence-of-the-touch-keyboard.md)
-
-### Designers
-
-- [Keyboard design guidelines](./keyboard-interactions.md)
-
-### Samples
-
-- [Touch keyboard sample](https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/TouchKeyboard)
-- [Basic input sample](https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/BasicInput)
-- [Low latency input sample](https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/LowLatencyInput)
-- [Focus visuals sample](https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/XamlFocusVisuals)
-
-### Archive Samples
-
-- [Input sample](https://github.com/microsoftarchive/msdn-code-gallery-microsoft/tree/411c271e537727d737a53fa2cbe99eaecac00cc0/Official%20Windows%20Platform%20Sample/Input%20XAML%20user%20input%20events%20sample)
-- [Input: Device capabilities sample](https://github.com/microsoftarchive/msdn-code-gallery-microsoft/tree/411c271e537727d737a53fa2cbe99eaecac00cc0/Official%20Windows%20Platform%20Sample/Windows%208%20app%20samples/%5BC%23%5D-Windows%208%20app%20samples/C%23/Windows%208%20app%20samples/Input%20Device%20capabilities%20sample%20(Windows%208))
-- [Input: Touch keyboard sample](https://github.com/microsoftarchive/msdn-code-gallery-microsoft/tree/411c271e537727d737a53fa2cbe99eaecac00cc0/Official%20Windows%20Platform%20Sample/Windows%208%20app%20samples/%5BC%23%5D-Windows%208%20app%20samples/C%23/Windows%208%20app%20samples/Input%20Touch%20keyboard%20sample%20(Windows%208))
-- [Responding to the appearance of the on-screen keyboard sample](https://github.com/microsoftarchive/msdn-code-gallery-microsoft/tree/411c271e537727d737a53fa2cbe99eaecac00cc0/Official%20Windows%20Platform%20Sample/Responding%20to%20the%20appearance%20of%20the%20on-screen%20keyboard%20sample)
-- [XAML text editing sample](https://github.com/microsoftarchive/msdn-code-gallery-microsoft/tree/411c271e537727d737a53fa2cbe99eaecac00cc0/Official%20Windows%20Platform%20Sample/Windows%208%20app%20samples/%5BVB%5D-Windows%208%20app%20samples/VB/Windows%208%20app%20samples/XAML%20text%20editing%20sample%20(Windows%208))
diff --git a/hub/apps/design/input/touch-interactions.md b/hub/apps/design/input/touch-interactions.md
deleted file mode 100644
index d180b9363a..0000000000
--- a/hub/apps/design/input/touch-interactions.md
+++ /dev/null
@@ -1,598 +0,0 @@
----
-description: Create Windows apps with intuitive and distinctive user interaction experiences that are optimized for touch but are functionally consistent across input devices.
-title: Touch interactions
-ms.assetid: DA6EBC88-EB18-4418-A98A-457EA1DEA88A
-label: Touch interactions
-template: detail.hbs
-keywords: touch, pointer, input, user interaction
-ms.date: 05/03/2022
-ms.topic: article
-
-
-ms.localizationpriority: medium
----
-
-# Touch interactions
-
-Design your app with the expectation that touch will be the primary input method of your users. If you use UWP controls, support for touchpad, mouse, and pen/stylus requires no additional programming, because UWP apps provide this for free.
-
-However, keep in mind that a UI optimized for touch is not always superior to a traditional UI. Both provide advantages and disadvantages that are unique to a technology and application. In the move to a touch-first UI, it is important to understand the core differences between touch, touchpad, pen/stylus, mouse, and keyboard input.
-
-> **Important APIs**: [**Windows.UI.Xaml.Input**](/uwp/api/Windows.UI.Xaml.Input), [**Windows.UI.Core**](/uwp/api/Windows.UI.Core), [**Windows.Devices.Input**](/uwp/api/Windows.Devices.Input)
-
-Many devices have multi-touch screens that support using one or more fingers (or touch contacts) as input. The touch contacts, and their movement, are interpreted as touch gestures and manipulations to support various user interactions.
-
-The Windows app includes a number of different mechanisms for handling touch input, enabling you to create an immersive experience that your users can explore with confidence. Here, we cover the basics of using touch input in a Windows app.
-
-Touch interactions require three things:
-
-- A touch-sensitive display.
-- The direct contact (or proximity to, if the display has proximity sensors and supports hover detection) of one or more fingers on that display.
-- Movement of the touch contacts (or lack thereof, based on a time threshold).
-
-The input data provided by the touch sensor can be:
-
-- Interpreted as a physical gesture for direct manipulation of one or more UI elements (such as panning, rotating, resizing, or moving). In contrast, interacting with an element through its properties window, dialog box, or other UI affordance is considered indirect manipulation.
-- Recognized as an alternative input method, such as mouse or pen.
-- Used to complement or modify aspects of other input methods, such as smudging an ink stroke drawn with a pen.
-
-Touch input typically involves the direct manipulation of an element on the screen. The element responds immediately to any touch contact within its hit test area, and reacts appropriately to any subsequent movement of the touch contacts, including removal.
-
-Custom touch gestures and interactions should be designed carefully. They should be intuitive, responsive, and discoverable, and they should let users explore your app with confidence.
-
-Ensure that app functionality is exposed consistently across every supported input device type. If necessary, use some form of indirect input mode, such as text input for keyboard interactions, or UI affordances for mouse and pen.
-
-Remember that traditional input devices (such as mouse and keyboard), are familiar and appealing to many users. They can offer speed, accuracy, and tactile feedback that touch might not.
-
-Providing unique and distinctive interaction experiences for all input devices will support the widest range of capabilities and preferences, appeal to the broadest possible audience, and attract more customers to your app.
-
-## Compare touch interaction requirements
-
-The following table shows some of the differences between input devices that you should consider when you design touch-optimized Windows apps.
-
-
-
Factor
Touch interactions
Mouse, keyboard, pen/stylus interactions
Touchpad
-
Precision
The contact area of a fingertip is greater than a single x-y coordinate, which increases the chances of unintended command activations.
The mouse and pen/stylus supply a precise x-y coordinate.
Same as mouse.
-
The shape of the contact area changes throughout the movement.
Mouse movements and pen/stylus strokes supply precise x-y coordinates. Keyboard focus is explicit.
Same as mouse.
-
There is no mouse cursor to assist with targeting.
The mouse cursor, pen/stylus cursor, and keyboard focus all assist with targeting.
Same as mouse.
-
Human anatomy
Fingertip movements are imprecise, because a straight-line motion with one or more fingers is difficult. This is due to the curvature of hand joints and the number of joints involved in the motion.
It's easier to perform a straight-line motion with the mouse or pen/stylus because the hand that controls them travels a shorter physical distance than the cursor on the screen.
Same as mouse.
-
Some areas on the touch surface of a display device can be difficult to reach due to finger posture and the user's grip on the device.
The mouse and pen/stylus can reach any part of the screen while any control should be accessible by the keyboard through tab order.
Finger posture and grip can be an issue.
-
Objects might be obscured by one or more fingertips or the user's hand. This is known as occlusion.
Indirect input devices do not cause occlusion.
Same as mouse.
-
Object state
Touch uses a two-state model: the touch surface of a display device is either touched (on) or not (off). There is no hover state that can trigger additional visual feedback.
-
A mouse, pen/stylus, and keyboard all expose a three-state model: up (off), down (on), and hover (focus).
-
Hover lets users explore and learn through tooltips associated with UI elements. Hover and focus effects can relay which objects are interactive and also help with targeting.
-
-
Same as mouse.
-
Rich interaction
Supports multi-touch: multiple input points (fingertips) on a touch surface.
Supports a single input point.
Same as touch.
-
Supports direct manipulation of objects through gestures such as tapping, dragging, sliding, pinching, and rotating.
No support for direct manipulation as mouse, pen/stylus, and keyboard are indirect input devices.
Same as mouse.
-
-
-> [!NOTE]
-> Indirect input has had the benefit of more than 25 years of refinement. Features such as hover-triggered tooltips have been designed to solve UI exploration specifically for touchpad, mouse, pen/stylus, and keyboard input. UI features like this have been re-designed for the rich experience provided by touch input, without compromising the user experience for these other devices.
-
-## Use touch feedback
-
-Appropriate visual feedback during interactions with your app helps users recognize, learn, and adapt to how their interactions are interpreted by both the app and the Windows platform. Visual feedback can indicate successful interactions, relay system status, improve the sense of control, reduce errors, help users understand the system and input device, and encourage interaction.
-
-Visual feedback is critical when the user relies on touch input for activities that require accuracy and precision based on location. Display feedback whenever and wherever touch input is detected, to help the user understand any custom targeting rules that are defined by your app and its controls.
-
-## Targeting
-
-Targeting is optimized through:
-
-- Touch target sizes
-
- Clear size guidelines ensure that applications provide a comfortable UI that contains objects and controls that are easy and safe to target.
-
-- Contact geometry
-
- The entire contact area of the finger determines the most likely target object.
-
-- Scrubbing
-
- Items within a group are easily re-targeted by dragging the finger between them (for example, radio buttons). The current item is activated when the touch is released.
-
-- Rocking
-
- Densely packed items (for example, hyperlinks) are easily re-targeted by pressing the finger down and, without sliding, rocking it back and forth over the items. Due to occlusion, the current item is identified through a [tooltip](../controls/tooltips.md) or the status bar and is activated when the touch is released.
-
-## Accuracy
-
-Design for sloppy interactions by using:
-
-- Snap-points that can make it easier to stop at desired locations when users interact with content.
-- Directional "rails" that can assist with vertical or horizontal panning, even when the hand moves in a slight arc. For more information, see [Guidelines for panning](guidelines-for-panning.md).
-
-## Occlusion
-
-Finger and hand occlusion is avoided through:
-
-- Size and positioning of UI
-
- Make UI elements big enough so that they cannot be completely covered by a fingertip contact area.
-
- Position menus and pop-ups above the contact area whenever possible.
-
-- Tooltips
-
- Show tooltips when a user maintains finger contact on an object. This is useful for describing object functionality. The user can drag the fingertip off the object to avoid invoking the tooltip.
-
- For small objects, offset tooltips so they are not covered by the fingertip contact area. This is helpful for targeting.
-
-- Handles for precision
-
- Where precision is required (for example, text selection), provide selection handles that are offset to improve accuracy. For more information, see [Guidelines for selecting text and images (Windows Runtime apps)](guidelines-for-textselection.md).
-
-## Timing
-
-Avoid timed mode changes in favor of direct manipulation. Direct manipulation simulates the direct, real-time physical handling of an object. The object responds as the fingers are moved.
-
-A timed interaction, on the other hand, occurs after a touch interaction. Timed interactions typically depend on invisible thresholds like time, distance, or speed to determine what command to perform. Timed interactions have no visual feedback until the system performs the action.
-
-Direct manipulation provides a number of benefits over timed interactions:
-
-- Instant visual feedback during interactions make users feel more engaged, confident, and in control.
-- Direct manipulations make it safer to explore a system because they are reversible—users can easily step back through their actions in a logical and intuitive manner.
-- Interactions that directly affect objects and mimic real world interactions are more intuitive, discoverable, and memorable. They don't rely on obscure or abstract interactions.
-- Timed interactions can be difficult to perform, as users must reach arbitrary and invisible thresholds.
-
-In addition, the following are strongly recommended:
-
-- Manipulations should not be distinguished by the number of fingers used.
-- Interactions should support compound manipulations. For example, pinch to zoom while dragging the fingers to pan.
-- Interactions should not be distinguished by time. The same interaction should have the same outcome regardless of the time taken to perform it. Time-based activations introduce mandatory delays for users and detract from both the immersive nature of direct manipulation and the perception of system responsiveness.
-
- > [!NOTE]
- > An exception to this is where you use specific timed interactions to assist in learning and exploration (for example, press and hold).
-
-- Appropriate descriptions and visual cues have a great effect on the use of advanced interactions.
-
-## App views
-
-Tweak the user interaction experience through the pan/scroll and zoom settings of your app views. An app view dictates how a user accesses and manipulates your app and its content. Views also provide behaviors such as inertia, content boundary bounce, and snap points.
-
-Pan and scroll settings of the [**ScrollViewer**](/uwp/api/Windows.UI.Xaml.Controls.ScrollViewer) control dictate how users navigate within a single view, when the content of the view doesn't fit within the viewport. A single view can be, for example, a page of a magazine or book, the folder structure of a computer, a library of documents, or a photo album.
-
-Zoom settings apply to both optical zoom (supported by the [**ScrollViewer**](/uwp/api/Windows.UI.Xaml.Controls.ScrollViewer) control) and the [**Semantic Zoom**](/uwp/api/Windows.UI.Xaml.Controls.SemanticZoom) control. Semantic Zoom is a touch-optimized technique for presenting and navigating large sets of related data or content within a single view. It works by using two distinct modes of classification, or zoom levels. This is analogous to panning and scrolling within a single view. Panning and scrolling can be used in conjunction with Semantic Zoom.
-
-Use app views and events to modify the pan/scroll and zoom behaviors. This can provide a smoother interaction experience than is possible through the handling of pointer and gesture events.
-
-For more info about app views, see [Controls, layouts, and text](../basics/index.md).
-
-## Custom touch interactions
-
-If you implement your own interaction support, keep in mind that users expect an intuitive experience involving direct interaction with the UI elements in your app. We recommend that you model your custom interactions on the platform control libraries to keep things consistent and discoverable. The controls in these libraries provide the full user interaction experience, including standard interactions, animated physics effects, visual feedback, and accessibility. Create custom interactions only if there is a clear, well-defined requirement and basic interactions don't support your scenario.
-
-> [!Important]
-> **Windows 11 and newer**
->
-> *Some three- and four-finger touch interactions will no longer work in Windows apps by default.*
->
-> By default, three- and four-finger touch interactions are now consumed by the system for operations such as switching or minimizing windows and changing virtual desktops. As these interactions are now handled at the system level, your app's functionality could be affected by this change.
->
-> To support three- or four-finger interactions within an application, a new user setting has been introduced that specifies whether or not the system handles these interactions:
->
-> **Bluetooth & devices > Touch > "Three- and four-finger touch gestures"**
->
-> When set to "On" (default), the system will handle all three- and four-finger interactions (apps will not be able to support them).
->
-> When set to "Off", three- and four-finger interactions can be supported by apps (they will not be handled by the system).
->
-> If your application must support these interactions, we recommend that you inform users of this setting and provide a link that launches the Settings app to the relevant page (ms-settings:devices-touch). For more details, see [Launch the Windows Settings app](/windows/uwp/launch-resume/launch-settings-app).
-
-To provide customized touch support, you can handle various [**UIElement**](/uwp/api/Windows.UI.Xaml.UIElement) events. These events are grouped into three levels of abstraction.
-
-- Static gesture events are triggered after an interaction is complete. Gesture events include [**Tapped**](/uwp/api/windows.ui.xaml.uielement.tapped), [**DoubleTapped**](/uwp/api/windows.ui.xaml.uielement.doubletapped), [**RightTapped**](/uwp/api/windows.ui.xaml.uielement.righttapped), and [**Holding**](/uwp/api/windows.ui.xaml.uielement.holding).
-
- You can disable gesture events on specific elements by setting [**IsTapEnabled**](/uwp/api/windows.ui.xaml.uielement.istapenabled), [**IsDoubleTapEnabled**](/uwp/api/windows.ui.xaml.uielement.isdoubletapenabled), [**IsRightTapEnabled**](/uwp/api/windows.ui.xaml.uielement.isrighttapenabled), and [**IsHoldingEnabled**](/uwp/api/windows.ui.xaml.uielement.isholdingenabled) to **false**.
-
-- Pointer events such as [**PointerPressed**](/uwp/api/windows.ui.xaml.uielement.pointerpressed) and [**PointerMoved**](/uwp/api/windows.ui.xaml.uielement.pointermoved) provide low-level details for each touch contact, including pointer motion and the ability to distinguish press and release events.
-
- A pointer is a generic input type with a unified event mechanism. It exposes basic info, such as screen position, on the active input source, which can be touch, touchpad, mouse, or pen.
-
-- Manipulation gesture events, such as [**ManipulationStarted**](/uwp/api/windows.ui.xaml.uielement.manipulationstarted), indicate an ongoing interaction. They start firing when the user touches an element and continue until the user lifts their finger(s), or the manipulation is canceled.
-
- Manipulation events include multi-touch interactions such as zooming, panning, or rotating, and interactions that use inertia and velocity data such as dragging. The information provided by the manipulation events doesn't identify the form of the interaction that was performed, but rather includes data such as position, translation delta, and velocity. You can use this touch data to determine the type of interaction that should be performed.
-
-Here is the basic set of touch gestures supported by the UWP.
-
-| Name | Type | Description |
-|----------------|----------------------|----------------------------------------------------------------------------------------|
-| Tap | Static gesture | One finger touches the screen and lifts up. |
-| Press and hold | Static gesture | One finger touches the screen and stays in place. |
-| Slide | Manipulation gesture | One or more fingers touch the screen and move in the same direction. |
-| Swipe | Manipulation gesture | One or more fingers touch the screen and move a short distance in the same direction. |
-| Turn | Manipulation gesture | Two or more fingers touch the screen and move in a clockwise or counter-clockwise arc. |
-| Pinch | Manipulation gesture | Two or more fingers touch the screen and move closer together. |
-| Stretch | Manipulation gesture | Two or more fingers touch the screen and move farther apart. |
-
-## Gesture events
-
-For details about individual controls, see [Controls list](../controls/index.md).
-
-## Pointer events
-
-Pointer events are raised by a variety of active input sources, including touch, touchpad, pen, and mouse (they replace traditional mouse events.)
-
-Pointer events are based on a single input point (finger, pen tip, mouse cursor) and do not support velocity-based interactions.
-
-Here is a list of pointer events and their related event argument.
-
-| Event or class | Description |
-|----------------------------------------------------------------------|---------------------------------------------------------------|
-| [**PointerPressed**](/uwp/api/windows.ui.xaml.uielement.pointerpressed) | Occurs when a single finger touches the screen. |
-| [**PointerReleased**](/uwp/api/windows.ui.xaml.uielement.pointerreleased) | Occurs when that same touch contact is lifted. |
-| [**PointerMoved**](/uwp/api/windows.ui.xaml.uielement.pointermoved) | Occurs when the pointer is dragged across the screen. |
-| [**PointerEntered**](/uwp/api/windows.ui.xaml.uielement.pointerentered) | Occurs when a pointer enters the hit test area of an element. |
-| [**PointerExited**](/uwp/api/windows.ui.xaml.uielement.pointerexited) | Occurs when a pointer exits the hit test area of an element. |
-| [**PointerCanceled**](/uwp/api/windows.ui.xaml.uielement.pointercanceled) | Occurs when a touch contact is abnormally lost. |
-| [**PointerCaptureLost**](/uwp/api/windows.ui.xaml.uielement.pointercapturelost) | Occurs when a pointer capture is taken by another element. |
-| [**PointerWheelChanged**](/uwp/api/windows.ui.xaml.uielement.pointerwheelchanged) | Occurs when the delta value of a mouse wheel changes and when the touchpad is pinched. |
-| [**PointerRoutedEventArgs**](/uwp/api/Windows.UI.Xaml.Input.PointerRoutedEventArgs) | Provides data for all pointer events. |
-
-The following example shows how to use the [**PointerPressed**](/uwp/api/windows.ui.xaml.uielement.pointerpressed), [**PointerReleased**](/uwp/api/windows.ui.xaml.uielement.pointerreleased), and [**PointerExited**](/uwp/api/windows.ui.xaml.uielement.pointerexited) events to handle a tap interaction on a [**Rectangle**](/uwp/api/Windows.UI.Xaml.Shapes.Rectangle) object.
-
-First, a [**Rectangle**](/uwp/api/Windows.UI.Xaml.Shapes.Rectangle) named `touchRectangle` is created in Extensible Application Markup Language (XAML).
-
-```XAML
-
-
-
-```
-
-Next, listeners for the [**PointerPressed**](/uwp/api/windows.ui.xaml.uielement.pointerpressed), [**PointerReleased**](/uwp/api/windows.ui.xaml.uielement.pointerreleased), and [**PointerExited**](/uwp/api/windows.ui.xaml.uielement.pointerexited) events are specified.
-
-```cpp
-MainPage::MainPage()
-{
- InitializeComponent();
-
- // Pointer event listeners.
- touchRectangle->PointerPressed += ref new PointerEventHandler(this, &MainPage::touchRectangle_PointerPressed);
- touchRectangle->PointerReleased += ref new PointerEventHandler(this, &MainPage::touchRectangle_PointerReleased);
- touchRectangle->PointerExited += ref new PointerEventHandler(this, &MainPage::touchRectangle_PointerExited);
-}
-```
-
-```cs
-public MainPage()
-{
- this.InitializeComponent();
-
- // Pointer event listeners.
- touchRectangle.PointerPressed += touchRectangle_PointerPressed;
- touchRectangle.PointerReleased += touchRectangle_PointerReleased;
- touchRectangle.PointerExited += touchRectangle_PointerExited;
-}
-```
-
-```vb
-Public Sub New()
-
- ' This call is required by the designer.
- InitializeComponent()
-
- ' Pointer event listeners.
- AddHandler touchRectangle.PointerPressed, AddressOf touchRectangle_PointerPressed
- AddHandler touchRectangle.PointerReleased, AddressOf Me.touchRectangle_PointerReleased
- AddHandler touchRectangle.PointerExited, AddressOf touchRectangle_PointerExited
-
-End Sub
-```
-
-Finally, the [**PointerPressed**](/uwp/api/windows.ui.xaml.uielement.pointerpressed) event handler increases the [**Height**](/uwp/api/Windows.UI.Xaml.FrameworkElement.Height) and [**Width**](/uwp/api/Windows.UI.Xaml.FrameworkElement.Width) of the [**Rectangle**](/uwp/api/Windows.UI.Xaml.Shapes.Rectangle), while the [**PointerReleased**](/uwp/api/windows.ui.xaml.uielement.pointerreleased) and [**PointerExited**](/uwp/api/windows.ui.xaml.uielement.pointerexited) event handlers set the **Height** and **Width** back to their starting values.
-
-```cpp
-// Handler for pointer exited event.
-void MainPage::touchRectangle_PointerExited(Object^ sender, PointerRoutedEventArgs^ e)
-{
- Rectangle^ rect = (Rectangle^)sender;
-
- // Pointer moved outside Rectangle hit test area.
- // Reset the dimensions of the Rectangle.
- if (nullptr != rect)
- {
- rect->Width = 200;
- rect->Height = 100;
- }
-}
-
-// Handler for pointer released event.
-void MainPage::touchRectangle_PointerReleased(Object^ sender, PointerRoutedEventArgs^ e)
-{
- Rectangle^ rect = (Rectangle^)sender;
-
- // Reset the dimensions of the Rectangle.
- if (nullptr != rect)
- {
- rect->Width = 200;
- rect->Height = 100;
- }
-}
-
-// Handler for pointer pressed event.
-void MainPage::touchRectangle_PointerPressed(Object^ sender, PointerRoutedEventArgs^ e)
-{
- Rectangle^ rect = (Rectangle^)sender;
-
- // Change the dimensions of the Rectangle.
- if (nullptr != rect)
- {
- rect->Width = 250;
- rect->Height = 150;
- }
-}
-```
-
-```cs
-// Handler for pointer exited event.
-private void touchRectangle_PointerExited(object sender, PointerRoutedEventArgs e)
-{
- Rectangle rect = sender as Rectangle;
-
- // Pointer moved outside Rectangle hit test area.
- // Reset the dimensions of the Rectangle.
- if (null != rect)
- {
- rect.Width = 200;
- rect.Height = 100;
- }
-}
-// Handler for pointer released event.
-private void touchRectangle_PointerReleased(object sender, PointerRoutedEventArgs e)
-{
- Rectangle rect = sender as Rectangle;
-
- // Reset the dimensions of the Rectangle.
- if (null != rect)
- {
- rect.Width = 200;
- rect.Height = 100;
- }
-}
-
-// Handler for pointer pressed event.
-private void touchRectangle_PointerPressed(object sender, PointerRoutedEventArgs e)
-{
- Rectangle rect = sender as Rectangle;
-
- // Change the dimensions of the Rectangle.
- if (null != rect)
- {
- rect.Width = 250;
- rect.Height = 150;
- }
-}
-```
-
-```vb
-' Handler for pointer exited event.
-Private Sub touchRectangle_PointerExited(sender As Object, e As PointerRoutedEventArgs)
- Dim rect As Rectangle = CType(sender, Rectangle)
-
- ' Pointer moved outside Rectangle hit test area.
- ' Reset the dimensions of the Rectangle.
- If (rect IsNot Nothing) Then
- rect.Width = 200
- rect.Height = 100
- End If
-End Sub
-
-' Handler for pointer released event.
-Private Sub touchRectangle_PointerReleased(sender As Object, e As PointerRoutedEventArgs)
- Dim rect As Rectangle = CType(sender, Rectangle)
-
- ' Reset the dimensions of the Rectangle.
- If (rect IsNot Nothing) Then
- rect.Width = 200
- rect.Height = 100
- End If
-End Sub
-
-' Handler for pointer pressed event.
-Private Sub touchRectangle_PointerPressed(sender As Object, e As PointerRoutedEventArgs)
- Dim rect As Rectangle = CType(sender, Rectangle)
-
- ' Change the dimensions of the Rectangle.
- If (rect IsNot Nothing) Then
- rect.Width = 250
- rect.Height = 150
- End If
-End Sub
-```
-
-## Manipulation events
-
-Use manipulation events if you need to support multiple finger interactions in your app, or interactions that require velocity data.
-
-You can use manipulation events to detect interactions such as drag, zoom, and hold.
-
-> [!NOTE]
-> The touchpad does not raise Manipulation events. Instead, pointer events will be raised for touchpad input.
-
-Here is a list of manipulation events and related event arguments.
-
-| Event or class | Description |
-|--------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------|
-| [**ManipulationStarting event**](/uwp/api/windows.ui.xaml.uielement.manipulationstarting) | Occurs when the manipulation processor is first created. |
-| [**ManipulationStarted event**](/uwp/api/windows.ui.xaml.uielement.manipulationstarted) | Occurs when an input device begins a manipulation on the [**UIElement**](/uwp/api/Windows.UI.Xaml.UIElement). |
-| [**ManipulationDelta event**](/uwp/api/windows.ui.xaml.uielement.manipulationdelta) | Occurs when the input device changes position during a manipulation. |
-| [**ManipulationInertiaStarting event**](/uwp/api/windows.ui.xaml.uielement.manipulationinertiastartingevent) | Occurs when the input device loses contact with the [**UIElement**](/uwp/api/Windows.UI.Xaml.UIElement) object during a manipulation and inertia begins. |
-| [**ManipulationCompleted event**](/uwp/api/windows.ui.xaml.uielement.manipulationcompleted) | Occurs when a manipulation and inertia on the [**UIElement**](/uwp/api/Windows.UI.Xaml.UIElement) are complete. |
-| [**ManipulationStartingRoutedEventArgs**](/uwp/api/Windows.UI.Xaml.Input.ManipulationStartingRoutedEventArgs) | Provides data for the [**ManipulationStarting**](/uwp/api/windows.ui.xaml.uielement.manipulationstarting) event. |
-| [**ManipulationStartedRoutedEventArgs**](/uwp/api/Windows.UI.Xaml.Input.ManipulationStartedRoutedEventArgs) | Provides data for the [**ManipulationStarted**](/uwp/api/windows.ui.xaml.uielement.manipulationstarted) event. |
-| [**ManipulationDeltaRoutedEventArgs**](/uwp/api/Windows.UI.Xaml.Input.ManipulationDeltaRoutedEventArgs) | Provides data for the [**ManipulationDelta**](/uwp/api/windows.ui.xaml.uielement.manipulationdelta) event. |
-| [**ManipulationInertiaStartingRoutedEventArgs**](/uwp/api/Windows.UI.Xaml.Input.ManipulationInertiaStartingRoutedEventArgs) | Provides data for the [**ManipulationInertiaStarting**](/uwp/api/windows.ui.xaml.uielement.manipulationinertiastarting) event. |
-| [**ManipulationVelocities**](/uwp/api/Windows.UI.Input.ManipulationVelocities) | Describes the speed at which manipulations occur. |
-| [**ManipulationCompletedRoutedEventArgs**](/uwp/api/Windows.UI.Xaml.Input.ManipulationCompletedRoutedEventArgs) | Provides data for the [**ManipulationCompleted**](/uwp/api/windows.ui.xaml.uielement.manipulationcompleted) event. |
-
-A gesture consists of a series of manipulation events. Each gesture starts with a [**ManipulationStarted**](/uwp/api/windows.ui.xaml.uielement.manipulationstarted) event, such as when a user touches the screen.
-
-Next, one or more [**ManipulationDelta**](/uwp/api/windows.ui.xaml.uielement.manipulationdelta) events are fired. For example, if you touch the screen and then drag your finger across the screen. Finally, a [**ManipulationCompleted**](/uwp/api/windows.ui.xaml.uielement.manipulationcompleted) event is raised when the interaction finishes.
-
-> [!NOTE]
-> If you don't have a touch-screen monitor, you can test your manipulation event code in the simulator using a mouse and mouse wheel interface.
-
-The following example shows how to use the [**ManipulationDelta**](/uwp/api/windows.ui.xaml.uielement.manipulationdelta) events to handle a slide interaction on a [**Rectangle**](/uwp/api/Windows.UI.Xaml.Shapes.Rectangle) and move it across the screen.
-
-First, a [**Rectangle**](/uwp/api/Windows.UI.Xaml.Shapes.Rectangle) named `touchRectangle` is created in XAML with a [**Height**](/uwp/api/Windows.UI.Xaml.FrameworkElement.Height) and [**Width**](/uwp/api/Windows.UI.Xaml.FrameworkElement.Width) of 200.
-
-```XAML
-
-
-
-```
-
-Next, a global [**TranslateTransform**](/uwp/api/Windows.UI.Xaml.Media.TranslateTransform) named `dragTranslation` is created for translating the [**Rectangle**](/uwp/api/Windows.UI.Xaml.Shapes.Rectangle). A [**ManipulationDelta**](/uwp/api/windows.ui.xaml.uielement.manipulationdelta) event listener is specified on the **Rectangle**, and `dragTranslation` is added to the [**RenderTransform**](/uwp/api/windows.ui.xaml.uielement.rendertransform) of the **Rectangle**.
-
-```cpp
-// Global translation transform used for changing the position of
-// the Rectangle based on input data from the touch contact.
-Windows::UI::Xaml::Media::TranslateTransform^ dragTranslation;
-```
-
-```cs
-// Global translation transform used for changing the position of
-// the Rectangle based on input data from the touch contact.
-private TranslateTransform dragTranslation;
-```
-
-```vb
-' Global translation transform used for changing the position of
-' the Rectangle based on input data from the touch contact.
-Private dragTranslation As TranslateTransform
-```
-
-```cpp
-MainPage::MainPage()
-{
- InitializeComponent();
-
- // Listener for the ManipulationDelta event.
- touchRectangle->ManipulationDelta +=
- ref new ManipulationDeltaEventHandler(
- this,
- &MainPage::touchRectangle_ManipulationDelta);
- // New translation transform populated in
- // the ManipulationDelta handler.
- dragTranslation = ref new TranslateTransform();
- // Apply the translation to the Rectangle.
- touchRectangle->RenderTransform = dragTranslation;
-}
-```
-
-```cs
-public MainPage()
-{
- this.InitializeComponent();
-
- // Listener for the ManipulationDelta event.
- touchRectangle.ManipulationDelta += touchRectangle_ManipulationDelta;
- // New translation transform populated in
- // the ManipulationDelta handler.
- dragTranslation = new TranslateTransform();
- // Apply the translation to the Rectangle.
- touchRectangle.RenderTransform = this.dragTranslation;
-}
-```
-
-```vb
-Public Sub New()
-
- ' This call is required by the designer.
- InitializeComponent()
-
- ' Listener for the ManipulationDelta event.
- AddHandler touchRectangle.ManipulationDelta,
- AddressOf testRectangle_ManipulationDelta
- ' New translation transform populated in
- ' the ManipulationDelta handler.
- dragTranslation = New TranslateTransform()
- ' Apply the translation to the Rectangle.
- touchRectangle.RenderTransform = dragTranslation
-
-End Sub
-```
-
-Finally, in the [**ManipulationDelta**](/uwp/api/windows.ui.xaml.uielement.manipulationdelta) event handler, the position of the [**Rectangle**](/uwp/api/Windows.UI.Xaml.Shapes.Rectangle) is updated by using the [**TranslateTransform**](/uwp/api/Windows.UI.Xaml.Media.TranslateTransform) on the [**Delta**](/uwp/api/windows.ui.xaml.input.manipulationdeltaroutedeventargs.delta) property.
-
-```cpp
-// Handler for the ManipulationDelta event.
-// ManipulationDelta data is loaded into the
-// translation transform and applied to the Rectangle.
-void MainPage::touchRectangle_ManipulationDelta(Object^ sender,
- ManipulationDeltaRoutedEventArgs^ e)
-{
- // Move the rectangle.
- dragTranslation->X += e->Delta.Translation.X;
- dragTranslation->Y += e->Delta.Translation.Y;
-
-}
-```
-
-```cs
-// Handler for the ManipulationDelta event.
-// ManipulationDelta data is loaded into the
-// translation transform and applied to the Rectangle.
-void touchRectangle_ManipulationDelta(object sender,
- ManipulationDeltaRoutedEventArgs e)
-{
- // Move the rectangle.
- dragTranslation.X += e.Delta.Translation.X;
- dragTranslation.Y += e.Delta.Translation.Y;
-}
-```
-
-```vb
-' Handler for the ManipulationDelta event.
-' ManipulationDelta data Is loaded into the
-' translation transform And applied to the Rectangle.
-Private Sub testRectangle_ManipulationDelta(
- sender As Object,
- e As ManipulationDeltaRoutedEventArgs)
-
- ' Move the rectangle.
- dragTranslation.X = (dragTranslation.X + e.Delta.Translation.X)
- dragTranslation.Y = (dragTranslation.Y + e.Delta.Translation.Y)
-
-End Sub
-```
-
-## Routed events
-
-All of the pointer events, gesture events and manipulation events mentioned here are implemented as *routed events*. This means that the event can potentially be handled by objects other than the one that originally raised the event. Successive parents in an object tree, such as the parent containers of a [**UIElement**](/uwp/api/Windows.UI.Xaml.UIElement) or the root [**Page**](/uwp/api/Windows.UI.Xaml.Controls.Page) of your app, can choose to handle these events even if the original element does not. Conversely, any object that does handle the event can mark the event handled so that it no longer reaches any parent element. For more info about the routed event concept and how it affects how you write handlers for routed events, see [Events and routed events overview](/previous-versions/windows/apps/hh758286(v=win.10)).
-
-> [!Important]
-> If you need to handle pointer events for a [**UIElement**](/uwp/api/Windows.UI.Xaml.UIElement) in a scrollable view (such as a ScrollViewer or ListView), you must explicitly disable support for manipulation events on the element in the view by calling [UIElement.CancelDirectmanipulation()](/uwp/api/windows.ui.xaml.uielement.canceldirectmanipulations). To re-enable manipulation events in the view, call [UIElement.TryStartDirectManipulation()](/uwp/api/windows.ui.xaml.uielement.trystartdirectmanipulation).
-
-## Dos and dont's
-
-- Design applications with touch interaction as the primary expected input method.
-- Provide visual feedback for interactions of all types (touch, pen, stylus, mouse, etc.)
-- Optimize targeting by adjusting touch target size, contact geometry, scrubbing and rocking.
-- Optimize accuracy through the use of snap points and directional "rails".
-- Provide tooltips and handles to help improve touch accuracy for tightly packed UI items.
-- Don't use timed interactions whenever possible (example of appropriate use: touch and hold).
-- Don't use the number of fingers used to distinguish the manipulation whenever possible.
-
-## Related articles
-
-- [Handle pointer input](handle-pointer-input.md)
-- [Identify input devices](identify-input-devices.md)
-
-### Samples
-
-- [Basic input sample](https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/BasicInput)
-- [Low latency input sample](https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/LowLatencyInput)
-- [User interaction mode sample](https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/UserInteractionMode)
-- [Focus visuals sample](https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/XamlFocusVisuals)
-
-### Archive Samples
-
-- [Input: Device capabilities sample](https://github.com/microsoftarchive/msdn-code-gallery-microsoft/tree/411c271e537727d737a53fa2cbe99eaecac00cc0/Official%20Windows%20Platform%20Sample/Windows%208%20app%20samples/%5BC%23%5D-Windows%208%20app%20samples/C%23/Windows%208%20app%20samples/Input%20Device%20capabilities%20sample%20(Windows%208))
-- [Input: XAML user input events sample](https://github.com/microsoftarchive/msdn-code-gallery-microsoft/tree/411c271e537727d737a53fa2cbe99eaecac00cc0/Official%20Windows%20Platform%20Sample/Input%20XAML%20user%20input%20events%20sample)
-- [XAML scrolling, panning, and zooming sample](https://github.com/microsoftarchive/msdn-code-gallery-microsoft/tree/411c271e537727d737a53fa2cbe99eaecac00cc0/Official%20Windows%20Platform%20Sample/Universal%20Windows%20app%20samples/111487-Universal%20Windows%20app%20samples/XAML%20scrolling%2C%20panning%2C%20and%20zooming%20sample)
-- [Input: Gestures and manipulations with GestureRecognizer](https://github.com/microsoftarchive/msdn-code-gallery-microsoft/tree/411c271e537727d737a53fa2cbe99eaecac00cc0/Official%20Windows%20Platform%20Sample/Input%20Gestures%20and%20manipulations%20with%20GestureRecognizer)
diff --git a/hub/apps/design/layout/alignment-margin-padding.md b/hub/apps/design/layout/alignment-margin-padding.md
index 6897ef056e..1f62ffb57f 100644
--- a/hub/apps/design/layout/alignment-margin-padding.md
+++ b/hub/apps/design/layout/alignment-margin-padding.md
@@ -1,7 +1,7 @@
---
description: Use alignment, margin, and padding properties to arrange the layout of elements on a page.
title: Alignment, margin, and padding for layout
-ms.date: 03/19/2018
+ms.date: 09/26/2024
ms.topic: article
keywords: windows 10, uwp
ms.localizationpriority: medium
@@ -9,67 +9,67 @@ ms.custom: RS5
---
# Alignment, margin, padding
-In XAML apps, most user interface (UI) elements inherit from the [**FrameworkElement**](/uwp/api/Windows.UI.Xaml.FrameworkElement) class. Every FrameworkElement has dimensions, alignment, margin, and padding properties, which influence layout behavior. The following guidance provides an overview of how to use these layout properties to make sure your app's UI is legible and easy to use in any context.
+In XAML apps, most user interface (UI) elements inherit from the [**FrameworkElement**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.frameworkelement) class. Every FrameworkElement has dimensions, alignment, margin, and padding properties, which influence layout behavior. The following guidance provides an overview of how to use these layout properties to make sure your app's UI is legible and easy to use in any context.
## Dimensions (Height, Width)
+
Proper sizing ensures all content is clear and legible. Users shouldn’t have to scroll or zoom to decipher primary content.

-- [**Height**](/uwp/api/windows.ui.xaml.frameworkelement.height) and [**Width**](/uwp/api/windows.ui.xaml.frameworkelement.width) specify the size of an element. The default values are mathematically NaN (Not A Number). You can set fixed values measured in [effective pixels](screen-sizes-and-breakpoints-for-responsive-design.md#effective-pixels-and-scale-factor), or you can use **Auto** or [proportional sizing](layout-panels.md#grid) for fluid behavior.
+- [**Height**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.frameworkelement.height) and [**Width**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.frameworkelement.width) specify the size of an element. The default values are mathematically `NaN` (Not A Number). You can set fixed values measured in [effective pixels](screen-sizes-and-breakpoints-for-responsive-design.md#effective-pixels-and-scale-factor), or you can use **Auto** or [proportional sizing](layout-panels.md#grid) for fluid behavior.
-- [**ActualHeight**](/uwp/api/windows.ui.xaml.frameworkelement.actualheight) and [**ActualWidth**](/uwp/api/windows.ui.xaml.frameworkelement.actualwidth) are read-only properties that provide the size of an element at runtime. If fluid layouts grow or shrink, then the values change in a [**SizeChanged**](/uwp/api/windows.ui.xaml.frameworkelement.sizechanged) event. Note that a [**RenderTransform**](/uwp/api/windows.ui.xaml.uielement.rendertransform) will not change the ActualHeight and ActualWidth values.
+- [**ActualHeight**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.frameworkelement.actualheight) and [**ActualWidth**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.frameworkelement.actualwidth) are read-only properties that provide the size of an element at runtime. If fluid layouts grow or shrink, then the values change in a [**SizeChanged**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.frameworkelement.sizechanged) event. Note that a [**RenderTransform**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.uielement.rendertransform) will not change the ActualHeight and ActualWidth values.
-- [**MinWidth**](/uwp/api/windows.ui.xaml.frameworkelement.minwidth)/[**MaxWidth**](/uwp/api/windows.ui.xaml.frameworkelement.maxwidth) and [**MinHeight**](/uwp/api/windows.ui.xaml.frameworkelement.minheight)/[**MaxHeight**](/uwp/api/windows.ui.xaml.frameworkelement.maxheight) specify values that constrain the size of an element while allowing fluid resizing.
+- [**MinWidth**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.frameworkelement.minwidth)/[**MaxWidth**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.frameworkelement.maxwidth) and [**MinHeight**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.frameworkelement.minheight)/[**MaxHeight**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.frameworkelement.maxheight) specify values that constrain the size of an element while allowing fluid resizing.
-- [**FontSize**](/uwp/api/windows.ui.xaml.controls.textblock.fontsize) and other text properties control layout size for text elements. While text elements don't have explicitly declared dimensions, they do have calculated ActualWidth and ActualHeight.
+- [**FontSize**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.textblock.fontsize) and other text properties control layout size for text elements. While text elements don't have explicitly declared dimensions, they do have calculated ActualWidth and ActualHeight.
## Alignment
+
Alignment makes your UI look neat, organized, and balanced and can also be used to establish visual hierarchy and relationships.

-- [**HorizontalAlignment**](/uwp/api/windows.ui.xaml.frameworkelement.horizontalalignment) and [**VerticalAlignment**](/uwp/api/windows.ui.xaml.frameworkelement.verticalalignment) specify how an element should be positioned within its parent container.
- - The values for **HorizontalAlignment** are **Left**, **Center**, **Right**, and **Stretch**.
- - The values for **VerticalAlignment** are **Top**, **Center**, **Bottom**, and **Stretch**.
+- [**HorizontalAlignment**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.frameworkelement.horizontalalignment) and [**VerticalAlignment**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.frameworkelement.verticalalignment) specify how an element should be positioned within its parent container.
+ - The values for **HorizontalAlignment** are **Left**, **Center**, **Right**, and **Stretch**.
+ - The values for **VerticalAlignment** are **Top**, **Center**, **Bottom**, and **Stretch**.
- **Stretch** is the default for both properties, and elements fill all of the space they're provided in the parent container. Real-number Height and Width cancel a Stretch value, which will instead act as a Center value. Some controls, like Button, override the default Stretch value in their default style.
-
-- [**HorizontalContentAlignment**](/uwp/api/windows.ui.xaml.controls.control.horizontalcontentalignment) and [**VerticalContentAlignment**](/uwp/api/windows.ui.xaml.controls.control.verticalcontentalignment) specify how child elements are positioned within a container.
-
+- [**HorizontalContentAlignment**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.control.horizontalcontentalignment) and [**VerticalContentAlignment**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.control.verticalcontentalignment) specify how child elements are positioned within a container.
- Alignment can affect clipping within a layout panel. For example, with `HorizontalAlignment="Left"`, the right side of the element gets clipped if the content is larger than the ActualWidth.
-
-- Text elements use the [**TextAlignment**](/uwp/api/windows.ui.xaml.textalignment) property. Generally, we recommend using left-alignment, the default value. For more information about styling text, see [Typography](../style/typography.md).
+- Text elements use the [**TextAlignment**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.textalignment) property. Generally, we recommend using left-alignment, the default value. For more information about styling text, see [Typography](../style/typography.md).
## Margin and padding
+
Margin and padding properties keep UI from looking too cluttered or too sparse, and they can also make it easier to use certain inputs like pen and touch. Here's an illustration displaying margins and padding for a container and its content.

### Margin
-[**Margin**](/uwp/api/windows.ui.xaml.frameworkelement.margin) controls the amount of empty space around an element. Margin does not add pixels to ActualHeight and ActualWidth and is not considered part of the element for hit testing and sourcing input events.
-- Margin values can be uniform or distinct. With `Margin="20"`, a uniform margin of 20 pixels would be applied to the element on the left, top, right, and bottom sides. With `Margin="0,10,5,25"`, the values are applied to the left, top, right, and bottom (in that order).
+[**Margin**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.frameworkelement.margin) controls the amount of empty space around an element. Margin does not add pixels to ActualHeight and ActualWidth and is not considered part of the element for hit testing and sourcing input events.
+- Margin values can be uniform or distinct. With `Margin="20"`, a uniform margin of 20 pixels would be applied to the element on the left, top, right, and bottom sides. With `Margin="0,10,5,25"`, the values are applied to the left, top, right, and bottom (in that order).
- Margins are additive. If two elements both specify a uniform margin of 10 pixels and are adjacent peers in any orientation, the distance between them is 20 pixels.
-
- Negative margins are permitted. However, using a negative margin can often cause clipping, or overdraws of peers, so it's not a common technique to use negative margins.
-
- Margin values are constrained last, so be careful with margins because containers can clip or constrain elements. A Margin value could be the cause of an element not appearing to render; with a Margin applied, an element's dimension can be constrained to 0.
### Padding
-[**Padding**](/uwp/api/windows.ui.xaml.frameworkelement.margin?view=winrt-22000&preserve-view=true#margin-and-padding) controls the amount of space between the inner border of an element and its child content or elements. A positive Padding value decreases the content area of the element.
+
+[**Padding**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.frameworkelement.margin#margin-and-padding) controls the amount of space between the inner border of an element and its child content or elements. A positive Padding value decreases the content area of the element.
Unlike Margin, Padding is not a property of FrameworkElement. There are several classes which each define their own Padding property:
-- [**Control.Padding**](/uwp/api/windows.ui.xaml.controls.control.padding): inherits to all [**Control**](/uwp/api/windows.ui.xaml.controls) derived classes. Not all controls have content, so for those controls, setting the property does nothing. If the control has a border, the padding applies inside that border.
-- [**Border.Padding**](/uwp/api/windows.ui.xaml.controls.border.padding): defines space between the rectangle line created by [**BorderThickness**](/uwp/api/windows.ui.xaml.controls.border.borderthickness)/[**BorderBrush**](/uwp/api/windows.ui.xaml.controls.border.borderbrush) and the [**Child**](/uwp/api/windows.ui.xaml.controls.border.child) element.
-- [**ItemsPresenter.Padding**](/uwp/api/windows.ui.xaml.controls.itemspresenter.padding): contributes to appearance of the items in item controls, placing the specified padding around each item.
-- [**TextBlock.Padding**](/uwp/api/windows.ui.xaml.controls.textblock.padding) and [**RichTextBlock.Padding**](/uwp/api/windows.ui.xaml.controls.richtextblock.padding): expand the bounding box around the text of the text element. These text elements don't have a **Background**, so it can be visually difficult to see. For that reason, use [**Margin**](/uwp/api/windows.ui.xaml.documents.block.margin) settings on [**Block**](/uwp/api/windows.ui.xaml.documents.block) containers instead.
+- [**Control.Padding**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.control.padding): inherits to all [**Control**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls) derived classes. Not all controls have content, so for those controls, setting the property does nothing. If the control has a border, the padding applies inside that border.
+- [**Border.Padding**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.border.padding): defines space between the rectangle line created by [**BorderThickness**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.border.borderthickness)/[**BorderBrush**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.border.borderbrush) and the [**Child**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.border.child) element.
+- [**ItemsPresenter.Padding**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.itemspresenter.padding): contributes to appearance of the items in item controls, placing the specified padding around each item.
+- [**TextBlock.Padding**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.textblock.padding) and [**RichTextBlock.Padding**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.richtextblock.padding): expand the bounding box around the text of the text element. These text elements don't have a **Background**, so it can be visually difficult to see. For that reason, use [**Margin**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.documents.block.margin) settings on [**Block**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.documents.block) containers instead.
In each of these cases, elements also have a Margin property. If both Margin and Padding are applied, they are additive: the apparent distance between an outer container and any inner content will be margin plus padding.
### Example
+
Let's look at the effects of Margin and Padding on real controls. Here’s a TextBox inside of a Grid with the default Margin and Padding values of 0.

@@ -84,23 +84,23 @@ Here’s the same TextBox and Grid with Margin and Padding values on the TextBox

-
## Style resources
-You don't have to set each property value individually on a control. It's typically more efficient to group property values into a [**Style**](/uwp/api/Windows.UI.Xaml.Style) resource and apply the Style to a control. This is especially true when you need to apply the same property values to many controls. For more info about using styles, see [XAML styles](../style/xaml-styles.md).
+
+You don't have to set each property value individually on a control. It's typically more efficient to group property values into a [**Style**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.style) resource and apply the Style to a control. This is especially true when you need to apply the same property values to many controls. For more info about using styles, see [XAML styles](../../develop/platform/xaml/xaml-styles.md).
## General recommendations
-- Only apply measurement values to certain key elements and use fluid layout behavior for the other elements. This provides for [responsive UI](responsive-design.md) when the window width changes.
+- Only apply measurement values to certain key elements and use fluid layout behavior for the other elements. This provides for [responsive UI](responsive-design.md) when the window width changes.
- If you do use measurement values, **all dimensions, margins, and padding should be in increments of 4 epx**. When XAML uses [effective pixels and scaling](screen-sizes-and-breakpoints-for-responsive-design.md) to make your app legible on all devices and screen sizes, it scales UI elements by multiples of 4. Using values in increments of 4 results in the best rendering by aligning with whole pixels.
-
- For small window widths (less than 640 pixels), we recommend 12 epx gutters, and for larger window widths, we recommend 24 epx gutters.

## Related topics
-* [**FrameworkElement.Height**](/uwp/api/windows.ui.xaml.frameworkelement.height)
-* [**FrameworkElement.Width**](/uwp/api/windows.ui.xaml.frameworkelement.width)
-* [**FrameworkElement.HorizontalAlignment**](/uwp/api/windows.ui.xaml.frameworkelement.horizontalalignment)
-* [**FrameworkElement.VerticalAlignment**](/uwp/api/windows.ui.xaml.frameworkelement.verticalalignment)
-* [**FrameworkElement.Margin**](/uwp/api/windows.ui.xaml.frameworkelement.margin)
-* [**Control.Padding**](/uwp/api/windows.ui.xaml.controls.control.padding)
+
+- [**FrameworkElement.Height**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.frameworkelement.height)
+- [**FrameworkElement.Width**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.frameworkelement.width)
+- [**FrameworkElement.HorizontalAlignment**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.frameworkelement.horizontalalignment)
+- [**FrameworkElement.VerticalAlignment**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.frameworkelement.verticalalignment)
+- [**FrameworkElement.Margin**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.frameworkelement.margin)
+- [**Control.Padding**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.control.padding)
diff --git a/hub/apps/design/layout/attached-layouts.md b/hub/apps/design/layout/attached-layouts.md
index 762eb7e90c..3427d33ad2 100644
--- a/hub/apps/design/layout/attached-layouts.md
+++ b/hub/apps/design/layout/attached-layouts.md
@@ -14,9 +14,9 @@ A container (for example, Panel) that delegates its layout logic to another obje
In this topic, we cover what's involved in creating an attached layout (virtualizing and non-virtualizing), the concepts and classes you'll need to understand, and the trade-offs you'll need to consider when deciding between them.
-| **Get the Windows UI Library** |
+| **Get WinUI** |
| - |
-| This control is included as part of the Windows UI Library, a NuGet package that contains new controls and UI features for Windows apps. For more info, including installation instructions, see the [Windows UI Library overview](/uwp/toolkits/winui/). |
+| This control is included as part of WinUI, a NuGet package that contains new controls and UI features for Windows apps. For more info, including installation instructions, see the [WinUI overview](/uwp/toolkits/winui/). |
> **Important APIs**:
@@ -108,7 +108,7 @@ The layout's state object can be stored with and retrieved from the container wi
### UI Virtualization
-UI virtualization means delaying the creation of a UI object until _when it's needed_. It's a performance optimization. For non-scrolling scenarios determining _when needed_ may be based on any number of things that are app-specific. In those cases, apps should consider using the [x:Load](/windows/uwp/xaml-platform/x-load-attribute). It does not require any special handling in your layout.
+UI virtualization means delaying the creation of a UI object until _when it's needed_. It's a performance optimization. For non-scrolling scenarios determining _when needed_ may be based on any number of things that are app-specific. In those cases, apps should consider using the [x:Load](/windows/apps/develop/platform/xaml/x-load-attribute). It does not require any special handling in your layout.
In scrolling-based scenarios such as a list, determining _when needed_ is often based on "will it be visible to a user" which depends heavily on where it was placed during the layout process and requires special considerations. This scenario is a focus for this document.
@@ -292,7 +292,7 @@ The UI for the Xbox Activity Feed uses a repeating pattern where each line has a
The code below walks through what a custom virtualizing UI for the activity feed might be to illustrate the general approach you might take for a **data layout**.
> [!TIP]
-> If you have the **WinUI 3 Gallery** app installed, click here to [open the app and see the ItemsRepeater in action](winui3gallery:/item/ItemsRepeater). Get the app from the [Microsoft Store](https://www.microsoft.com/store/productId/9P3JFPWWDZRC) or get the source code on [GitHub](https://github.com/microsoft/WinUI-Gallery).
+> If you have the **WinUI 3 Gallery** app installed, click here to [open the app and see the ItemsRepeater in action](winui3gallery:/item/ItemsRepeater). Get the app from the [Microsoft Store](https://apps.microsoft.com/detail/9P3JFPWWDZRC) or get the source code on [GitHub](https://github.com/microsoft/WinUI-Gallery).
#### Implementation
diff --git a/hub/apps/design/layout/custom-panels-overview.md b/hub/apps/design/layout/custom-panels-overview.md
index 18afbee192..aff0176808 100644
--- a/hub/apps/design/layout/custom-panels-overview.md
+++ b/hub/apps/design/layout/custom-panels-overview.md
@@ -9,7 +9,7 @@ label: XAML custom panels overview (Windows apps)
template: detail.hbs
op-migration-status: ready
ms.date: 05/19/2017
-ms.topic: article
+ms.topic: concept-article
keywords: windows 10, uwp
ms.localizationpriority: medium
---
@@ -50,7 +50,7 @@ The [**Children**](/uwp/api/windows.ui.xaml.controls.panel.children) property is
```
-When a XAML parser reads this markup, [**Children**](/uwp/api/windows.ui.xaml.controls.panel.children) is known to be the XAML content property for all [**Panel**](/uwp/api/Windows.UI.Xaml.Controls.Panel) derived types, so the parser will add the two [**Button**](/uwp/api/Windows.UI.Xaml.Controls.Button) elements to the [**UIElementCollection**](/uwp/api/Windows.UI.Xaml.Controls.UIElementCollection) value of the **Children** property. The XAML content property facilitates a streamlined parent-child relationship in the XAML markup for a UI definition. For more info about XAML content properties, and how collection properties are populated when XAML is parsed, see the [XAML syntax guide](/windows/uwp/xaml-platform/xaml-syntax-guide).
+When a XAML parser reads this markup, [**Children**](/uwp/api/windows.ui.xaml.controls.panel.children) is known to be the XAML content property for all [**Panel**](/uwp/api/Windows.UI.Xaml.Controls.Panel) derived types, so the parser will add the two [**Button**](/uwp/api/Windows.UI.Xaml.Controls.Button) elements to the [**UIElementCollection**](/uwp/api/Windows.UI.Xaml.Controls.UIElementCollection) value of the **Children** property. The XAML content property facilitates a streamlined parent-child relationship in the XAML markup for a UI definition. For more info about XAML content properties, and how collection properties are populated when XAML is parsed, see the [XAML syntax guide](/windows/apps/develop/platform/xaml/xaml-syntax-guide).
The collection type that's maintaining the value of the [**Children**](/uwp/api/windows.ui.xaml.controls.panel.children) property is the [**UIElementCollection**](/uwp/api/Windows.UI.Xaml.Controls.UIElementCollection) class. **UIElementCollection** is a strongly typed collection that uses [**UIElement**](/uwp/api/Windows.UI.Xaml.UIElement) as its enforced item type. **UIElement** is a base type that's inherited by hundreds of practical UI element types, so the type enforcement here is deliberately loose. But it does enforce that you couldn't have a [**Brush**](/uwp/api/Windows.UI.Xaml.Media.Brush) as a direct child of a [**Panel**](/uwp/api/Windows.UI.Xaml.Controls.Panel), and it generally means that only elements that are expected to be visible in UI and participate in layout will be found as child elements in a **Panel**.
diff --git a/hub/apps/design/layout/depth-shadow.md b/hub/apps/design/layout/depth-shadow.md
index 10e9c0f8e6..28b71ddee3 100644
--- a/hub/apps/design/layout/depth-shadow.md
+++ b/hub/apps/design/layout/depth-shadow.md
@@ -2,7 +2,7 @@
description: Z-depth, or relative depth, and shadow are two ways to incorporate depth into your app to help users focus naturally and efficiently.
title: Z-depth and shadow for Windows apps
template: detail.hbs
-ms.date: 06/24/2021
+ms.date: 09/26/2024
ms.topic: article
ms.custom: 19H1
keywords: windows 10, uwp
@@ -30,11 +30,11 @@ Shadow is one way a user perceives elevation. Light above an elevated object cre
In Windows apps, shadows should be used in a purposeful rather than aesthetic manner. Using too many shadows will decrease or eliminate the ability of the shadow to focus the user.
-If you use standard controls, shadows are already incorporated into your UI. However, you can manually include shadows in your UI by using either the [ThemeShadow](/uwp/api/windows.ui.xaml.media.themeshadow) or the [DropShadow](/uwp/api/windows.ui.composition.dropshadow) APIs.
+If you use standard controls, shadows are already incorporated into your UI. However, you can manually include shadows in your UI by using either the [ThemeShadow](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.themeshadow) or the [DropShadow](/windows/windows-app-sdk/api/winrt/microsoft.ui.composition.dropshadow) APIs.
## ThemeShadow
-The [ThemeShadow](/uwp/api/windows.ui.xaml.media.themeshadow) type can be applied to any XAML element to draw shadows appropriately based on x, y, z coordinates.
+The [ThemeShadow](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.themeshadow) type can be applied to any XAML element to draw shadows appropriately based on x, y, z coordinates.
- It applies shadows to elements based on z-depth value, emulating depth.
- It keeps shadows consistent throughout and across applications thanks to built in shadow aesthetics.
@@ -62,13 +62,13 @@ The following common controls will automatically use ThemeShadow to cast shadows
- [Connected animation](../motion/connected-animation.md)
> [!NOTE]
-> ThemeShadow was introduced in Windows 10 version 1903 (SDK 18362). It is updated in Windows 11 to to use ninegrid shadow instead of projected shadow for better performance.
+> ThemeShadow was introduced in Windows 10 version 1903 (SDK 18362). It is updated in Windows 11 to use ninegrid shadow instead of projected shadow for better performance.
### ThemeShadow in Popups
It is often the case that your app's UI uses a popup for scenarios where you need user's attention and quick action. These are great examples when shadow should be used to help create hierarchy in your app's UI.
-ThemeShadow automatically casts shadows when applied to any XAML element in a [Popup](/uwp/api/windows.ui.xaml.controls.primitives.popup). It will cast shadows on the app background content behind it and any other open Popups below it.
+ThemeShadow automatically casts shadows when applied to any XAML element in a [Popup](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.primitives.popup). It will cast shadows on the app background content behind it and any other open Popups below it.
To use ThemeShadow with Popups, use the `Shadow` property to apply a ThemeShadow to a XAML element. Then, elevate the element from other elements behind it, for example by using the z component of the `Translation` property.
For most Popup UI, the recommended default elevation relative to the app background content is 32 effective pixels.
@@ -94,9 +94,9 @@ PopupRectangle.Translation += new Vector3(0, 0, 32);
### Disabling default ThemeShadow on custom Flyout controls
-Controls based on [Flyout](/uwp/api/Windows.UI.Xaml.Controls.flyout), [DatePickerFlyout](/uwp/api/windows.ui.xaml.controls.datepickerflyout), [MenuFlyout](/uwp/api/Windows.UI.Xaml.Controls.menuflyout) or [TimePickerFlyout](/uwp/api/windows.ui.xaml.controls.timepickerflyout) automatically use ThemeShadow to cast a shadow.
+Controls based on [Flyout](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.flyout), [DatePickerFlyout](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.datepickerflyout), [MenuFlyout](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.menuflyout) or [TimePickerFlyout](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.timepickerflyout) automatically use ThemeShadow to cast a shadow.
-If the default shadow doesn't look correct on your control's content then you can disable it by setting the [IsDefaultShadowEnabled](/uwp/api/windows.ui.xaml.controls.flyoutpresenter.isdefaultshadowenabled) property to `false` on the associated FlyoutPresenter:
+If the default shadow doesn't look correct on your control's content then you can disable it by setting the [IsDefaultShadowEnabled](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.flyoutpresenter.isdefaultshadowenabled) property to `false` on the associated FlyoutPresenter:
```xaml
@@ -145,9 +145,9 @@ Rectangle2.Translation += new Vector3(120, 0, 32);
## Drop shadow
-DropShadow does not provide built in shadow values and you need to specify them yourself. For example implementations, see the [DropShadow](/uwp/api/windows.ui.composition.dropshadow) class.
+DropShadow does not provide built in shadow values and you need to specify them yourself. For example implementations, see the [DropShadow](/windows/windows-app-sdk/api/winrt/microsoft.ui.composition.dropshadow) class.
-> [!TIP]
+> [!TIP]
> Starting with Windows 11, if the app targets the Windows SDK version 22000 or later, ThemeShadow will behave like a drop shadow. If you are using DropShadow, you might consider using ThemeShadow instead.
## Which shadow should I use?
diff --git a/hub/apps/design/layout/grid-tutorial.md b/hub/apps/design/layout/grid-tutorial.md
index da2ac51991..1837265130 100644
--- a/hub/apps/design/layout/grid-tutorial.md
+++ b/hub/apps/design/layout/grid-tutorial.md
@@ -3,7 +3,7 @@ description: This tutorial walks through how to create a basic application user
title: Use Grid and StackPanel to create a simple app.
template: detail.hbs
ms.date: 09/24/2020
-ms.topic: article
+ms.topic: tutorial
keywords: windows 10, uwp
ms.assetid: 9794a04d-e67f-472c-8ba8-8ebe442f6ef2
ms.localizationpriority: medium
diff --git a/hub/apps/design/layout/index.md b/hub/apps/design/layout/index.md
index ed3e7e2329..7eb7c849ac 100644
--- a/hub/apps/design/layout/index.md
+++ b/hub/apps/design/layout/index.md
@@ -3,7 +3,7 @@ description: Learn how to create a flexible UI that looks great on different scr
title: Layout overview for Windows apps
keywords: uwp app layout, universal windows platform, app design, interface
ms.date: 01/28/2022
-ms.topic: article
+ms.topic: concept-article
ms.assetid: 1aa12606-8a99-4db3-8311-90e02fde9cf1
@@ -14,6 +14,17 @@ ms.localizationpriority: medium
These articles help you create a flexible UI that looks great on different screen sizes, window sizes, resolutions, and orientations.
+:::row:::
+ :::column:::
+### [App silhouettes](../basics/app-silhouette.md)
+Learn about common layout patterns.
+ :::column-end:::
+ :::column:::
+### [App title bar](../basics/titlebar-design.md)
+Learn about design recommendations and behaviors of the parts of a standard title bar.
+ :::column-end:::
+:::row-end:::
+
:::row:::
:::column:::
### [Screen sizes and breakpoints](screen-sizes-and-breakpoints-for-responsive-design.md)
@@ -31,8 +42,8 @@ Learn about responsive design techniques that optimize your app's layout for bre
Implement responsive UI in XAML with adaptive or tailored layouts.
:::column-end:::
:::column:::
-### [Multiple views](show-multiple-views.md)
-Show independent parts of your app in separate windows.
+### [Layout panels](layout-panels.md)
+Learn about each type of layout panel and how to use them to arrange UI elements.
:::column-end:::
:::row-end:::
@@ -42,18 +53,8 @@ Show independent parts of your app in separate windows.
Use alignment, margin, and padding to influence layout behavior.
:::column-end:::
:::column:::
-### [Layout panels](layout-panels.md)
-Learn about each type of layout panel an how to use them to arrange UI elements.
+### [Spacing](../style/spacing.md)
+Use sizing to provide a balance between information density and user comfort.
:::column-end:::
-:::row-end:::
-:::row:::
- :::column:::
-### [Transforms](transforms.md)
-Use transforms to rotate, skew, and scale elements.
- :::column-end:::
- :::column:::
-### [Attached layouts](attached-layouts.md)
-Learn advanced layout concepts in XAML and how to create a custom virtualizing layout.
- :::column-end:::
:::row-end:::
diff --git a/hub/apps/design/layout/layout-panels.md b/hub/apps/design/layout/layout-panels.md
index 579867885b..06b0848039 100644
--- a/hub/apps/design/layout/layout-panels.md
+++ b/hub/apps/design/layout/layout-panels.md
@@ -25,7 +25,7 @@ There are several things to consider when choosing a layout panel:
@@ -48,7 +48,7 @@ Here is an example of how you can set the [**Canvas.Left**](/dotnet/api/system.w
```
-For more info about attached properties, see [Attached properties overview](/windows/uwp/xaml-platform/attached-properties-overview).
+For more info about attached properties, see [Attached properties overview](/windows/apps/develop/platform/xaml/attached-properties-overview).
### Panel borders
@@ -197,7 +197,7 @@ The default column width is "*", so you don't need to explicitly set this value
-
+
```
diff --git a/hub/apps/design/layout/layouts-with-xaml.md b/hub/apps/design/layout/layouts-with-xaml.md
index bad19bf6a2..3b3e3055b5 100644
--- a/hub/apps/design/layout/layouts-with-xaml.md
+++ b/hub/apps/design/layout/layouts-with-xaml.md
@@ -1,11 +1,10 @@
---
description: Learn how to use the XAML flexible layout system with automatic sizing, layout panels, visual states, and separate UI definitions to create a responsive UI.
title: Responsive layouts with XAML
-ms.date: 01/28/2022
+ms.date: 09/26/2024
ms.topic: article
keywords: windows 10, uwp
ms.localizationpriority: medium
-ms.custom: contperf-fy21q2
dev_langs:
- csharp
- cppwinrt
@@ -25,29 +24,30 @@ In practice, you use a combination of static and fluid elements to create your U
Here, we discuss how to use XAML properties and layout panels to create a fluid layout.
### Layout properties
+
Layout properties control the size and position of an element. To create a fluid layout, use automatic or proportional sizing for elements, and allow layout panels to position their children as needed.
Here are some common layout properties and how to use them to create fluid layouts.
**Height and Width**
-The [**Height**](/uwp/api/windows.ui.xaml.frameworkelement.height) and [**Width**](/uwp/api/windows.ui.xaml.frameworkelement.width) properties specify the size of an element. You can use fixed values measured in effective pixels, or you can use auto or proportional sizing.
+The [**Height**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.frameworkelement.height) and [**Width**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.frameworkelement.width) properties specify the size of an element. You can use fixed values measured in effective pixels, or you can use auto or proportional sizing.
Auto sizing resizes UI elements to fit their content or parent container. You can also use auto sizing with the rows and columns of a grid. To use auto sizing, set the Height and/or Width of UI elements to **Auto**.
> [!NOTE]
> Whether an element resizes to its content or its container depends on how the parent container handles sizing of its children. For more info, see [Layout panels](#layout-panels) later in this article.
-Proportional sizing, also called *star sizing*, distributes available space among the rows and columns of a grid by weighted proportions. In XAML, star values are expressed as \* (or *n*\* for weighted star sizing). For example, to specify that one column is 5 times wider than the second column in a 2-column layout, use "5\*" and "\*" for the [**Width**](/uwp/api/windows.ui.xaml.controls.columndefinition.width) properties in the [**ColumnDefinition**](/uwp/api/Windows.UI.Xaml.Controls.ColumnDefinition) elements.
+Proportional sizing, also called *star sizing*, distributes available space among the rows and columns of a grid by weighted proportions. In XAML, star values are expressed as \* (or *n*\* for weighted star sizing). For example, to specify that one column is 5 times wider than the second column in a 2-column layout, use "5\*" and "\*" for the [**Width**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.columndefinition.width) properties in the [**ColumnDefinition**](/windows/windows-app-sdk/api/winrt/microsoft.UI.Xaml.Controls.ColumnDefinition) elements.
-This example combines fixed, auto, and proportional sizing in a [**Grid**](/uwp/api/Windows.UI.Xaml.Controls.Grid) with 4 columns.
+This example combines fixed, auto, and proportional sizing in a [**Grid**](/windows/windows-app-sdk/api/winrt/microsoft.UI.Xaml.Controls.Grid) with 4 columns.
| Column | Sizing | Description |
| ------ | ------ | ----------- |
-Column_1 | **Auto** | The column will size to fit its content.
-Column_2 | * | After the Auto columns are calculated, the column gets part of the remaining width. Column_2 will be one-half as wide as Column_4.
-Column_3 | **44** | The column will be 44 pixels wide.
-Column_4 | **2**\* | After the Auto columns are calculated, the column gets part of the remaining width. Column_4 will be twice as wide as Column_2.
+| Column_1 | **Auto** | The column will size to fit its content. |
+| Column_2 | * | After the Auto columns are calculated, the column gets part of the remaining width. Column_2 will be one-half as wide as Column_4. |
+| Column_3 | **44** | The column will be 44 pixels wide. |
+| Column_4 | **2**\* | After the Auto columns are calculated, the column gets part of the remaining width. Column_4 will be twice as wide as Column_2. |
The default column width is "*", so you don't need to explicitly set this value for the second column.
@@ -67,70 +67,72 @@ In the Visual Studio XAML designer, the result looks like this.

-To get the size of an element at runtime, use the read-only [**ActualHeight**](/uwp/api/windows.ui.xaml.frameworkelement.actualheight) and [**ActualWidth**](/uwp/api/windows.ui.xaml.frameworkelement.actualwidth) properties instead of Height and Width.
+To get the size of an element at runtime, use the read-only [**ActualHeight**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.frameworkelement.actualheight) and [**ActualWidth**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.frameworkelement.actualwidth) properties instead of Height and Width.
**Size constraints**
-When you use auto sizing in your UI, you might still need to place constraints on the size of an element. You can set the [**MinWidth**](/uwp/api/windows.ui.xaml.frameworkelement.minwidth)/[**MaxWidth**](/uwp/api/windows.ui.xaml.frameworkelement.maxwidth) and [**MinHeight**](/uwp/api/windows.ui.xaml.frameworkelement.minheight)/[**MaxHeight**](/uwp/api/windows.ui.xaml.frameworkelement.maxheight) properties to specify values that constrain the size of an element while allowing fluid resizing.
+When you use auto sizing in your UI, you might still need to place constraints on the size of an element. You can set the [**MinWidth**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.frameworkelement.minwidth)/[**MaxWidth**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.frameworkelement.maxwidth) and [**MinHeight**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.frameworkelement.minheight)/[**MaxHeight**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.frameworkelement.maxheight) properties to specify values that constrain the size of an element while allowing fluid resizing.
In a Grid, MinWidth/MaxWidth can also be used with column definitions, and MinHeight/MaxHeight can be used with row definitions.
**Alignment**
-Use the [**HorizontalAlignment**](/uwp/api/windows.ui.xaml.frameworkelement.horizontalalignment) and [**VerticalAlignment**](/uwp/api/windows.ui.xaml.frameworkelement.verticalalignment) properties to specify how an element should be positioned within its parent container.
+Use the [**HorizontalAlignment**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.frameworkelement.horizontalalignment) and [**VerticalAlignment**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.frameworkelement.verticalalignment) properties to specify how an element should be positioned within its parent container.
+
- The values for **HorizontalAlignment** are **Left**, **Center**, **Right**, and **Stretch**.
- The values for **VerticalAlignment** are **Top**, **Center**, **Bottom**, and **Stretch**.
-With the **Stretch** alignment, elements fill all the space they're provided in the parent container. Stretch is the default for both alignment properties. However, some controls, like [**Button**](/uwp/api/Windows.UI.Xaml.Controls.Button), override this value in their default style.
+With the **Stretch** alignment, elements fill all the space they're provided in the parent container. Stretch is the default for both alignment properties. However, some controls, like [**Button**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.button), override this value in their default style.
Any element that can have child elements can treat the Stretch value for HorizontalAlignment and VerticalAlignment properties uniquely. For example, an element using the default Stretch values placed in a Grid stretches to fill the cell that contains it. The same element placed in a Canvas sizes to its content. For more info about how each panel handles the Stretch value, see the [Layout panels](layout-panels.md) article.
-For more info, see the [Alignment, margin, and padding](alignment-margin-padding.md) article, and the [**HorizontalAlignment**](/uwp/api/windows.ui.xaml.frameworkelement.horizontalalignment) and [**VerticalAlignment**](/uwp/api/windows.ui.xaml.frameworkelement.verticalalignment) reference pages.
+For more info, see the [Alignment, margin, and padding](alignment-margin-padding.md) article, and the [**HorizontalAlignment**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.frameworkelement.horizontalalignment) and [**VerticalAlignment**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.frameworkelement.verticalalignment) reference pages.
**Visibility**
-You can reveal or hide an element by setting its [**Visibility**](/uwp/api/windows.ui.xaml.uielement.visibility) property to one of the [**Visibility** enumeration](/uwp/api/Windows.UI.Xaml.Visibility) values: **Visible** or **Collapsed**. When an element is Collapsed, it doesn't take up any space in the UI layout.
+You can reveal or hide an element by setting its [**Visibility**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.uielement.visibility) property to one of the [**Visibility** enumeration](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.visibility) values: **Visible** or **Collapsed**. When an element is Collapsed, it doesn't take up any space in the UI layout.
You can change an element's Visibility property in code or in a visual state. When the Visibility of an element is changed, all of its child elements are also changed. You can replace sections of your UI by revealing one panel while collapsing another.
-> [!Tip]
-> When you have elements in your UI that are **Collapsed** by default, the objects are still created at startup, even though they aren't visible. You can defer loading these elements until they are shown by using the **x:Load attribute** to delay the creation of the objects. This can improve startup performance. For more info, see [x:Load attribute](/windows/uwp/xaml-platform/x-load-attribute).
+> [!TIP]
+> When you have elements in your UI that are **Collapsed** by default, the objects are still created at startup, even though they aren't visible. You can defer loading these elements until they are shown by using the **x:Load attribute** to delay the creation of the objects. This can improve startup performance. For more info, see [x:Load attribute](/windows/apps/develop/platform/xaml/x-load-attribute).
### Style resources
-You don't have to set each property value individually on a control. It's typically more efficient to group property values into a [**Style**](/uwp/api/Windows.UI.Xaml.Style) resource and apply the Style to a control. This is especially true when you need to apply the same property values to many controls. For more info about using styles, see [Styling controls](../style/xaml-styles.md).
+You don't have to set each property value individually on a control. It's typically more efficient to group property values into a [**Style**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.style) resource and apply the Style to a control. This is especially true when you need to apply the same property values to many controls. For more info about using styles, see [Styling controls](../../develop/platform/xaml/xaml-styles.md).
### Layout panels
-To position visual objects, you must put them in a panel or other container object. The XAML framework provides various panel classes, such as [**Canvas**](/uwp/api/Windows.UI.Xaml.Controls.Canvas), [**Grid**](/uwp/api/Windows.UI.Xaml.Controls.Grid), [**RelativePanel**](/uwp/api/Windows.UI.Xaml.Controls.RelativePanel) and [**StackPanel**](/uwp/api/Windows.UI.Xaml.Controls.StackPanel), which serve as containers and enable you to position and arrange the UI elements within them.
+To position visual objects, you must put them in a panel or other container object. The XAML framework provides various panel classes, such as [**Canvas**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.canvas), [**Grid**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.grid), [**RelativePanel**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.relativepanel) and [**StackPanel**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.stackpanel), which serve as containers and enable you to position and arrange the UI elements within them.
The main thing to consider when choosing a layout panel is how the panel positions and sizes its child elements. You might also need to consider how overlapping child elements are layered on top of each other.
Here's a comparison of the main features of the panel controls provided in the XAML framework.
-Panel Control | Description
---------------|------------
-[**Canvas**](/uwp/api/Windows.UI.Xaml.Controls.Canvas) | **Canvas** doesn't support fluid UI; you control all aspects of positioning and sizing child elements. You typically use it for special cases like creating graphics or to define small static areas of a larger adaptive UI. You can use code or visual states to reposition elements at runtime.
Elements are positioned absolutely using Canvas.Top and Canvas.Left attached properties.
Layering can be explicitly specified using the Canvas.ZIndex attached property.
Stretch values for HorizontalAlignment/VerticalAlignment are ignored. If an element's size is not set explicitly, it sizes to its content.
Child content is not visually clipped if larger than the panel.
Child content is not constrained by the bounds of the panel.
-[**Grid**](/uwp/api/Windows.UI.Xaml.Controls.Grid) | **Grid** supports fluid resizing of child elements. You can use code or visual states to reposition and reflow elements.
Elements are arranged in rows and columns using Grid.Row and Grid.Column attached properties.
Elements can span multiple rows and columns using Grid.RowSpan and Grid.ColumnSpan attached properties.
Stretch values for HorizontalAlignment/VerticalAlignment are respected. If an element's size is not set explicitly, it stretches to fill the available space in the grid cell.
Child content is visually clipped if larger than the panel.
Content size is constrained by the bounds of the panel, so scrollable content shows scroll bars if needed.
Elements are arranged in relation to the edge or center of the panel, and in relation to each other.
Elements are positioned using a variety of attached properties that control panel alignment, sibling alignment, and sibling position.
Stretch values for HorizontalAlignment/VerticalAlignment are ignored unless RelativePanel attached properties for alignment cause stretching (for example, an element is aligned to both the right and left edges of the panel). If an element's size is not set explicitly and it's not stretched, it sizes to its content.
Child content is visually clipped if larger than the panel.
Content size is constrained by the bounds of the panel, so scrollable content shows scroll bars if needed.
Elements are stacked in a single line either vertically or horizontally.
Stretch values for HorizontalAlignment/VerticalAlignment are respected in the direction opposite the Orientation property. If an element's size is not set explicitly, it stretches to fill the available width (or height if the Orientation is Horizontal). In the direction specified by the Orientation property, an element sizes to its content.
Child content is visually clipped if larger than the panel.
Content size is not constrained by the bounds of the panel in the direction specified by the Orientation property, so scrollable content stretches beyond the panel bounds and doesn't show scrollbars. You must explicitly constrain the height (or width) of the child content to make its scrollbars show.
Elements are arranged in rows or columns that automatically wrap to a new row or column when the MaximumRowsOrColumns value is reached.
Whether elements are arranged in rows or columns is specified by the Orientation property.
Elements can span multiple rows and columns using VariableSizedWrapGrid.RowSpan and VariableSizedWrapGrid.ColumnSpan attached properties.
Stretch values for HorizontalAlignment and VerticalAlignment are ignored. Elements are sized as specified by the ItemHeight and ItemWidth properties. If these properties are not set, they take their values from the size of the first cell.
Child content is visually clipped if larger than the panel.
Content size is constrained by the bounds of the panel, so scrollable content shows scroll bars if needed.
+| Panel Control | Description |
+|--------------|------------|
+| [**Canvas**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.canvas) | **Canvas** doesn't support fluid UI; you control all aspects of positioning and sizing child elements. You typically use it for special cases like creating graphics or to define small static areas of a larger adaptive UI. You can use code or visual states to reposition elements at runtime.
Elements are positioned absolutely using Canvas.Top and Canvas.Left attached properties.
Layering can be explicitly specified using the Canvas.ZIndex attached property.
Stretch values for HorizontalAlignment/VerticalAlignment are ignored. If an element's size is not set explicitly, it sizes to its content.
Child content is not visually clipped if larger than the panel.
Child content is not constrained by the bounds of the panel.
|
+| [**Grid**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.grid) | **Grid** supports fluid resizing of child elements. You can use code or visual states to reposition and reflow elements.
Elements are arranged in rows and columns using Grid.Row and Grid.Column attached properties.
Elements can span multiple rows and columns using Grid.RowSpan and Grid.ColumnSpan attached properties.
Stretch values for HorizontalAlignment/VerticalAlignment are respected. If an element's size is not set explicitly, it stretches to fill the available space in the grid cell.
Child content is visually clipped if larger than the panel.
Content size is constrained by the bounds of the panel, so scrollable content shows scroll bars if needed.
Elements are arranged in relation to the edge or center of the panel, and in relation to each other.
Elements are positioned using a variety of attached properties that control panel alignment, sibling alignment, and sibling position.
Stretch values for HorizontalAlignment/VerticalAlignment are ignored unless RelativePanel attached properties for alignment cause stretching (for example, an element is aligned to both the right and left edges of the panel). If an element's size is not set explicitly and it's not stretched, it sizes to its content.
Child content is visually clipped if larger than the panel.
Content size is constrained by the bounds of the panel, so scrollable content shows scroll bars if needed.
Elements are stacked in a single line either vertically or horizontally.
Stretch values for HorizontalAlignment/VerticalAlignment are respected in the direction opposite the Orientation property. If an element's size is not set explicitly, it stretches to fill the available width (or height if the Orientation is Horizontal). In the direction specified by the Orientation property, an element sizes to its content.
Child content is visually clipped if larger than the panel.
Content size is not constrained by the bounds of the panel in the direction specified by the Orientation property, so scrollable content stretches beyond the panel bounds and doesn't show scrollbars. You must explicitly constrain the height (or width) of the child content to make its scrollbars show.
Elements are arranged in rows or columns that automatically wrap to a new row or column when the MaximumRowsOrColumns value is reached.
Whether elements are arranged in rows or columns is specified by the Orientation property.
Elements can span multiple rows and columns using VariableSizedWrapGrid.RowSpan and VariableSizedWrapGrid.ColumnSpan attached properties.
Stretch values for HorizontalAlignment and VerticalAlignment are ignored. Elements are sized as specified by the ItemHeight and ItemWidth properties. If these properties are not set, they take their values from the size of the first cell.
Child content is visually clipped if larger than the panel.
Content size is constrained by the bounds of the panel, so scrollable content shows scroll bars if needed.
|
For detailed information and examples of these panels, see [Layout panels](layout-panels.md).
Layout panels let you organize your UI into logical groups of controls. When you use them with appropriate property settings, you get some support for automatic resizing, repositioning, and reflowing of UI elements. However, most UI layouts need further modification when there are significant changes to the window size. For this, you can use visual states.
## Adaptive layouts with visual states and state triggers
+
Use visual states to make significant alterations to your UI based on window size or other changes.
When your app window grows or shrinks beyond a certain amount, you might want to alter layout properties to reposition, resize, reflow, reveal, or replace sections of your UI. You can define different visual states for your UI, and apply them when the window width or window height crosses a specified threshold.
-A [**VisualState**](/uwp/api/Windows.UI.Xaml.VisualState) defines property values that are applied to an element when it's in a particular state. You group visual states in a [**VisualStateManager**](/uwp/api/Windows.UI.Xaml.VisualStateManager) that applies the appropriate VisualState when the specified conditions are met. An [**AdaptiveTrigger**](/uwp/api/Windows.UI.Xaml.AdaptiveTrigger) provides an easy way to set the threshold (also called 'breakpoint') where a state is applied in XAML. Or, you can call the [**VisualStateManager.GoToState**](/uwp/api/windows.ui.xaml.visualstatemanager.gotostate) method in your code to apply the visual state. Examples of both ways are shown in the next sections.
+A [**VisualState**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.visualstate) defines property values that are applied to an element when it's in a particular state. You group visual states in a [**VisualStateManager**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.visualstatemanager) that applies the appropriate VisualState when the specified conditions are met. An [**AdaptiveTrigger**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.adaptivetrigger) provides an easy way to set the threshold (also called 'breakpoint') where a state is applied in XAML. Or, you can call the [**VisualStateManager.GoToState**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.visualstatemanager.gotostate) method in your code to apply the visual state. Examples of both ways are shown in the next sections.
### Set visual states in code
-To apply a visual state from code, you call the [**VisualStateManager.GoToState**](/uwp/api/windows.ui.xaml.visualstatemanager.gotostate) method. For example, to apply a state when the app window is a particular size, handle the [**SizeChanged**](/uwp/api/windows.ui.xaml.window.sizechanged) event and call **GoToState** to apply the appropriate state.
+To apply a visual state from code, you call the [**VisualStateManager.GoToState**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.visualstatemanager.gotostate) method. For example, to apply a state when the app window is a particular size, handle the [**SizeChanged**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.window.sizechanged) event and call **GoToState** to apply the appropriate state.
-Here, a [**VisualStateGroup**](/uwp/api/Windows.UI.Xaml.VisualStateGroup) contains two VisualState definitions. The first, `DefaultState`, is empty. When it's applied, the values defined in the XAML page are applied. The second, `WideState`, changes the [**DisplayMode**](/uwp/api/windows.ui.xaml.controls.splitview.displaymode) property of the [**SplitView**](/uwp/api/Windows.UI.Xaml.Controls.SplitView) to **Inline** and opens the pane. This state is applied in the SizeChanged event handler if the window width is greater than 640 effective pixels.
+Here, a [**VisualStateGroup**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.visualstategroup) contains two VisualState definitions. The first, `DefaultState`, is empty. When it's applied, the values defined in the XAML page are applied. The second, `WideState`, changes the [**DisplayMode**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.splitview.displaymode) property of the [**SplitView**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.splitview) to **Inline** and opens the pane. This state is applied in the SizeChanged event handler if the window width is greater than 640 effective pixels.
> [!NOTE]
> Windows doesn't provide a way for your app to detect the specific device your app is running on. It can tell you the device family (desktop, etc) the app is running on, the effective resolution, and the amount of screen space available to the app (the size of the app's window). We recommend defining visual states for [screen sizes and break points](screen-sizes-and-breakpoints-for-responsive-design.md).
@@ -206,11 +208,11 @@ void YourPage::CurrentWindow_SizeChanged(IInspectable const& sender, SizeChanged
### Set visual states in XAML markup
-Prior to Windows 10, VisualState definitions required [**Storyboard**](/uwp/api/Windows.UI.Xaml.Media.Animation.Storyboard) objects for property changes, and you had to call **GoToState** in code to apply the state. This is shown in the previous example. You will still see many examples that use this syntax, or you might have existing code that uses it.
+Prior to Windows 10, VisualState definitions required [**Storyboard**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.storyboard) objects for property changes, and you had to call **GoToState** in code to apply the state. This is shown in the previous example. You will still see many examples that use this syntax, or you might have existing code that uses it.
-Starting in Windows 10, you can use the simplified [**Setter**](/uwp/api/Windows.UI.Xaml.Setter) syntax shown here, and you can use a [**StateTrigger**](/uwp/api/Windows.UI.Xaml.StateTrigger) in your XAML markup to apply the state. You use state triggers to create simple rules that automatically trigger visual state changes in response to an app event.
+Starting in Windows 10, you can use the simplified [**Setter**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.setter) syntax shown here, and you can use a [**StateTrigger**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.statetrigger) in your XAML markup to apply the state. You use state triggers to create simple rules that automatically trigger visual state changes in response to an app event.
-This example does the same thing as the previous example, but uses the simplified **Setter** syntax instead of a Storyboard to define property changes. And instead of calling GoToState, it uses the built in [**AdaptiveTrigger**](/uwp/api/Windows.UI.Xaml.AdaptiveTrigger) state trigger to apply the state. When you use state triggers, you don't need to define an empty `DefaultState`. The default settings are reapplied automatically when the conditions of the state trigger are no longer met.
+This example does the same thing as the previous example, but uses the simplified **Setter** syntax instead of a Storyboard to define property changes. And instead of calling GoToState, it uses the built in [**AdaptiveTrigger**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.adaptivetrigger) state trigger to apply the state. When you use state triggers, you don't need to define an empty `DefaultState`. The default settings are reapplied automatically when the conditions of the state trigger are no longer met.
```xaml
@@ -244,14 +246,14 @@ This example does the same thing as the previous example, but uses the simplifie
```
-> [!Important]
+> [!IMPORTANT]
> In the previous example, the VisualStateManager.VisualStateGroups attached property is set on the **Grid** element. When you use StateTriggers, always ensure that VisualStateGroups is attached to the first child of the root in order for the triggers to take effect automatically. (Here, **Grid** is the first child of the root **Page** element.)
### Attached property syntax
In a VisualState, you typically set a value for a control property, or for one of the attached properties of the panel that contains the control. When you set an attached property, use parentheses around the attached property name.
-This example shows how to set the [**RelativePanel.AlignHorizontalCenterWithPanel**](/uwp/api/windows.ui.xaml.controls.relativepanel.alignhorizontalcenterwithpanelproperty) attached property on a TextBox named `myTextBox`. The first XAML uses [**ObjectAnimationUsingKeyFrames**](/uwp/api/Windows.UI.Xaml.Media.Animation.ObjectAnimationUsingKeyFrames) syntax and the second uses **Setter** syntax.
+This example shows how to set the [**RelativePanel.AlignHorizontalCenterWithPanel**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.relativepanel.alignhorizontalcenterwithpanelproperty) attached property on a TextBox named `myTextBox`. The first XAML uses [**ObjectAnimationUsingKeyFrames**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.objectanimationusingkeyframes) syntax and the second uses **Setter** syntax.
```xaml
@@ -267,11 +269,11 @@ This example shows how to set the [**RelativePanel.AlignHorizontalCenterWithPane
### Custom state triggers
-You can extend the [**StateTrigger**](/uwp/api/Windows.UI.Xaml.StateTrigger) class to create custom triggers for a wide range of scenarios. For example, you can create a StateTrigger to trigger different states based on input type, then increase the margins around a control when the input type is touch. Or create a StateTrigger to apply different states based on the device family the app is run on. For examples of how to build custom triggers and use them to create optimized UI experiences from within a single XAML view, see the [State triggers sample](https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/XamlStateTriggers).
+You can extend the [**StateTrigger**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.statetrigger) class to create custom triggers for a wide range of scenarios. For example, you can create a StateTrigger to trigger different states based on input type, then increase the margins around a control when the input type is touch. Or create a StateTrigger to apply different states based on the device family the app is run on. For examples of how to build custom triggers and use them to create optimized UI experiences from within a single XAML view, see the [State triggers sample](https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/XamlStateTriggers).
### Visual states and styles
-You can use Style resources in visual states to apply a set of property changes to multiple controls. For more info about using styles, see [Styling controls](../style/xaml-styles.md).
+You can use Style resources in visual states to apply a set of property changes to multiple controls. For more info about using styles, see [Styling controls](../../develop/platform/xaml/xaml-styles.md).
In this simplified XAML from the State triggers sample, a Style resource is applied to a Button to adjust the size and margins for mouse or touch input. For the complete code and the definition of the custom state trigger, see the [State triggers sample](https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/XamlStateTriggers).
diff --git a/hub/apps/design/layout/responsive-design.md b/hub/apps/design/layout/responsive-design.md
index 6a204c55e6..9e754e7f37 100644
--- a/hub/apps/design/layout/responsive-design.md
+++ b/hub/apps/design/layout/responsive-design.md
@@ -3,7 +3,7 @@ description: Learn responsive design techniques to tailor your app for specific
title: Responsive design techniques
template: detail.hbs
op-migration-status: ready
-ms.date: 09/24/2020
+ms.date: 09/25/2024
ms.topic: article
keywords: windows 10, uwp
localizationpriority: medium
@@ -11,7 +11,9 @@ ms.custom: RS5
---
# Responsive design techniques
-UWP apps use effective pixels to guarantee that your UI will be legible and usable on all Windows-powered devices. So, why would you ever want to customize your app's UI for a specific device family?
+_Responsive_ design uses just one layout where the content is fluid and can adapt to changing window sizes. Responsive design lets you build a feature one time and expect it to work across all screen sizes. _Adaptive_ design is similar, but replaces one layout with another layout.
+
+XAML apps use effective pixels to guarantee that your UI will be legible and usable on all Windows-powered devices. So, why would you ever want to customize your app's UI for a specific device or screen size?
- **To make the most effective use of space and reduce the need to navigate**
@@ -25,12 +27,9 @@ UWP apps use effective pixels to guarantee that your UI will be legible and usab
- **To optimize for input**
- The universal control library works with all input types (touch, pen, keyboard, mouse), but you can still optimize for certain input types by re-arranging your UI elements. For example, if you place navigation elements at the bottom of the screen, they'll be easier for phone users to access—but most PC users expect to see navigation elements toward the top of the screen.
-
-When you optimize your app's UI for specific screen widths, we say that you're creating a responsive design. Here are six responsive design techniques you can use to customize your app's UI.
+ The universal control library works with all input types (touch, pen, keyboard, mouse), but you can still optimize for certain input types by re-arranging your UI elements.
->[!TIP]
-> Many UWP controls automatically implement these responsive behaviors. To create a responsive UI, we recommend checking out the [UWP controls](../controls/index.md).
+When you optimize your app's UI for specific screen widths, we say that you're creating a responsive design. Here are some responsive design techniques you can use to customize your app's UI.
## Reposition
@@ -68,24 +67,27 @@ Part of the reveal-or-hide technique includes choosing when to display more meta
- In a music app, you can display more info about an album or artist.
- In a video app, you can display more info about a film or a show, such as showing cast and crew details.
- In any app, you can break apart columns and reveal more details.
-- In any app, you can take something that's vertically stacked and lay it out horizontally. When going from phone or phablet to larger devices, stacked list items can change to reveal rows of list items and columns of metadata.
+- In any app, you can take something that's vertically stacked and lay it out horizontally. When going from a small window to a larger window, stacked list items can change to reveal rows of list items and columns of metadata.
-## Replace
+## Re-architect
-This technique lets you switch the user interface for a specific breakpoints. In this example, the nav pane and its compact, transient UI works well for a smaller screen, but on a larger screen, tabs might be a better choice.
+You can collapse or fork the architecture of your app to better target specific devices. In this example, expanding the window shows the entire list/details pattern.
-
+
-The [NavigationView](../controls/navigationview.md) control supports this responsive technique, by letting users set the pane position to either top or left.
+## Adaptive layout
-## Re-architect
+An adaptive layout is similar to responsive layout, but entirely replaces UI based on the format it's presented in. Adaptive design has multiple fixed layout sizes and triggers the page to load a given layout based on the available space.
-You can collapse or fork the architecture of your app to better target specific devices. In this example, expanding the window shows the entire list/details pattern.
+This technique lets you switch the user interface for a specific breakpoints. In this example, the nav pane and its compact, transient UI works well for a smaller screen, but on a larger screen, tabs might be a better choice.
-
+
+
+The [NavigationView](../controls/navigationview.md) control supports this technique by letting users set the pane position to either top or left.
## Related topics
+- [Fluent Design - Layout](https://fluent2.microsoft.design/layout)
- [Screen sizes and breakpoints](screen-sizes-and-breakpoints-for-responsive-design.md)
- [Responsive layouts with XAML](layouts-with-xaml.md)
-- [UWP controls and patterns](../controls/index.md)
+- [XAML controls](../controls/index.md)
diff --git a/hub/apps/design/layout/screen-sizes-and-breakpoints-for-responsive-design.md b/hub/apps/design/layout/screen-sizes-and-breakpoints-for-responsive-design.md
index 6b9748a0d4..9391b21961 100644
--- a/hub/apps/design/layout/screen-sizes-and-breakpoints-for-responsive-design.md
+++ b/hub/apps/design/layout/screen-sizes-and-breakpoints-for-responsive-design.md
@@ -1,7 +1,7 @@
---
-title: Screen sizes and break points for responsive design
-description: Rather than optimizing your UI the many devices across the Windows 10 ecosystem, we recommended designing for a few key width categories called breakpoints.
-ms.date: 01/28/2022
+title: Screen sizes and break points for responsive design.
+description: Rather than optimizing your UI for the many devices across the Windows ecosystem, we recommended designing for a few key width categories called breakpoints.
+ms.date: 11/21/2024
ms.topic: article
keywords: windows 10, uwp
ms.localizationpriority: medium
@@ -40,13 +40,13 @@ XAML's effective pixel system automatically takes viewing distance in account fo
XAML helps by automatically adjusting UI elements so that they're legible and easy to interact with on all devices and screen sizes.
-When your app runs on a device, the system uses an algorithm to normalize the way UI elements display on the screen. This scaling algorithm takes into account viewing distance and screen density (pixels per inch) to optimize for perceived size (rather than physical size). The scaling algorithm ensures that a 24 px font on Surface Hub 10 feet away is just as legible to the user as a 24 px font on 5" phone that's a few inches away.
+When your app runs on a device, the system uses an algorithm to normalize the way UI elements display on the screen. This scaling algorithm takes into account viewing distance and screen density (pixels per inch) to optimize for perceived size (rather than physical size). The scaling algorithm ensures that a 24 px font on a large presentation screen 10 feet away is just as legible to the user as a 24 px font on a small portable screen that's a few inches away.
:::image type="content" source="images/scaling-chart.png" alt-text="Content is scaled differently on different devices based on how far away the user is expected to be from the device's screen":::
Because of how the scaling system works, when you design your XAML app, you're designing in effective pixels, not actual physical pixels. Effective pixels (epx) are a virtual unit of measurement, and they're used to express layout dimensions and spacing, independent of screen density. (In our guidelines, epx, ep, and px are used interchangeably.)
-You can ignore the pixel density and the actual screen resolution when designing. Instead, design for the effective resolution (the resolution in effective pixels) for a size class (for details, see the Screen sizes and breakpoints article).
+You can ignore the pixel density and the actual screen resolution when designing. Instead, design for the effective resolution (the resolution in effective pixels) for a size class.
> [!TIP]
> When creating screen mockups in image editing programs, set the DPI to 72 and set the image dimensions to the effective resolution for the size class you're targeting.
@@ -55,6 +55,13 @@ You can ignore the pixel density and the actual screen resolution when designing
:::image type="content" source="images/4epx.svg" alt-text="A 4 epx image being scaled to many dimensions without fractional pixels.":::
-The sizes, margins, and positions of UI elements should always be in multiples of 4 epx in your UWP apps.
+The sizes, margins, and positions of UI elements should always be in multiples of 4 epx in your XAML apps.
XAML scales across a range of devices with scaling plateaus of 100%, 125%, 150%, 175%, 200%, 225%, 250%, 300%, 350%, and 400%. The base unit is 4 because it can be scaled to these plateaus as a whole number (for example; 4 x 125% = 5, 4 x 150% = 6). Using multiples of four aligns all UI elements with whole pixels and ensures UI elements have crisp, sharp edges. (Note that text doesn't have this requirement; text can have any size and position.)
+
+## Related topics
+
+- [Fluent Design - Layout](https://fluent2.microsoft.design/layout)
+- [Responsive design](responsive-design.md)
+- [Responsive layouts with XAML](layouts-with-xaml.md)
+- [XAML controls](../controls/index.md)
diff --git a/hub/apps/design/layout/transforms.md b/hub/apps/design/layout/transforms.md
deleted file mode 100644
index 4d257401f7..0000000000
--- a/hub/apps/design/layout/transforms.md
+++ /dev/null
@@ -1,128 +0,0 @@
----
-ms.assetid: F46D5E18-10A3-4F7B-AD67-76437C77E4BC
-title: Transforms overview
-description: Learn how to use transforms in the Windows Runtime&\#160;API, by changing the relative coordinate systems of elements in the UI.
-ms.date: 02/08/2017
-ms.topic: article
-keywords: windows 10, uwp
-ms.localizationpriority: medium
----
-# Transforms overview
-
-Learn how to use transforms in the Windows Runtime API, by changing the relative coordinate systems of elements in the UI. This can be used to adjust the appearance of individual XAML elements, such as scaling, rotating, or transforming the position in x-y space.
-
-## What is a transform?
-
-A *transform* defines how to map, or transform, points from one coordinate space to another coordinate space. When a transform is applied to a UI element, it changes how that UI element is rendered to the screen as part of the UI.
-
-Think of transforms in four broad classifications: translation, rotation, scaling and skew (or shear). For the purposes of using graphics APIs to change the appearance of UI elements, it's usually easiest to create transforms that define only one operation at a time. So the Windows Runtime defines a discrete class for each of these transform classifications:
-
-- [**TranslateTransform**](/uwp/api/Windows.UI.Xaml.Media.TranslateTransform): translates an element in x-y space, by setting values for [**X**](/uwp/api/windows.ui.xaml.media.translatetransform.x) and [**Y**](/uwp/api/windows.ui.xaml.media.translatetransform.y).
-- [**ScaleTransform**](/uwp/api/Windows.UI.Xaml.Media.ScaleTransform): scales the transform based on a center point, by setting values for [**CenterX**](/uwp/api/windows.ui.xaml.media.scaletransform.centerx), [**CenterY**](/uwp/api/windows.ui.xaml.media.scaletransform.centery), [**ScaleX**](/uwp/api/windows.ui.xaml.media.scaletransform.scalex) and [**ScaleY**](/uwp/api/windows.ui.xaml.media.scaletransform.scaleyproperty).
-- [**RotateTransform**](/uwp/api/Windows.UI.Xaml.Media.RotateTransform): rotates in x-y space, by setting values for [**Angle**](/uwp/api/windows.ui.xaml.media.rotatetransform.angle), [**CenterX**](/uwp/api/windows.ui.xaml.media.rotatetransform.centerx) and [**CenterY**](/uwp/api/windows.ui.xaml.media.rotatetransform.centery).
-- [**SkewTransform**](/uwp/api/Windows.UI.Xaml.Media.SkewTransform): skews or shears in x-y space, by setting values for [**AngleX**](/uwp/api/windows.ui.xaml.media.skewtransform.anglex), [**AngleY**](/uwp/api/windows.ui.xaml.media.skewtransform.angley), [**CenterX**](/uwp/api/windows.ui.xaml.media.skewtransform.centerx) and [**CenterY**](/uwp/api/windows.ui.xaml.media.scaletransform.centeryproperty).
-
-Of these, you're likely to use [**TranslateTransform**](/uwp/api/Windows.UI.Xaml.Media.TranslateTransform) and [**ScaleTransform**](/uwp/api/Windows.UI.Xaml.Media.ScaleTransform) most often for UI scenarios.
-
-You can combine transforms, and there are two Windows Runtime classes that support this: [**CompositeTransform**](/uwp/api/Windows.UI.Xaml.Media.CompositeTransform) and [**TransformGroup**](/uwp/api/Windows.UI.Xaml.Media.TransformGroup). In a **CompositeTransform**, transforms are applied in this order: scale, skew, rotate, translate. Use **TransformGroup** instead of **CompositeTransform** if you want the transforms applied in a different order. For more info, see [**CompositeTransform**](/uwp/api/Windows.UI.Xaml.Media.CompositeTransform).
-
-## Transforms and layout
-
-In XAML layout, transforms are applied after the layout pass is complete, so available space calculations and other layout decisions have been made before the transforms are applied. Because layout comes first, you'll sometimes get unexpected results if you transform elements that are in a [**Grid**](/uwp/api/Windows.UI.Xaml.Controls.Grid) cell or similar layout container that allocates space during layout. The transformed element may appear truncated or obscured because it's trying to draw into an area that didn't calculate the post-transform dimensions when dividing space within its parent container. You may need to experiment with the transform results and adjust some settings. For example, instead of relying on adaptive layout and star sizing, you may need to change the **Center** properties or declare fixed pixel measurements for layout space to make sure the parent allots enough space.
-
-**Migration note:** Windows Presentation Foundation (WPF) had a **LayoutTransform** property that applied transforms prior to the layout pass. But Windows Runtime XAML doesn't support a **LayoutTransform** property. (Microsoft Silverlight didn't have this property either.)
-
-As an alternative, the Windows Community Toolkit provides the [LayoutTransformControl](/windows/communitytoolkit/controls/LayoutTransformControl) that applies Matrix transformations on any FrameworkElement of your application.
-
-## Applying a transform to a UI element
-
-When you apply a transform to an object, you typically do so to set the property [**UIElement.RenderTransform**](/uwp/api/windows.ui.xaml.uielement.rendertransform). Setting this property does not literally change the object pixel by pixel. What the property really does is apply the transform within the local coordinate space in which that object exists. Then the rendering logic and operation (post-layout) renders the combined coordinate spaces, making it look like the object has changed appearance and also potentially its layout position (if [**TranslateTransform**](/uwp/api/Windows.UI.Xaml.Media.TranslateTransform) was applied).
-
-By default, each render transform is centered at the origin of the target object's local coordinate system—its (0,0). The only exception is a [**TranslateTransform**](/uwp/api/Windows.UI.Xaml.Media.TranslateTransform), which has no center properties to set because the translation effect is the same regardless of where it is centered. But the other transforms each have properties that set **CenterX** and **CenterY** values.
-
-Whenever you use transforms with [**UIElement.RenderTransform**](/uwp/api/windows.ui.xaml.uielement.rendertransform), remember that there's another property on [**UIElement**](/uwp/api/Windows.UI.Xaml.UIElement) that affects how the transform behaves: [**RenderTransformOrigin**](/uwp/api/windows.ui.xaml.uielement.rendertransformorigin). What **RenderTransformOrigin** declares is whether the whole transform should apply to the default (0,0) point of an element or to some other origin point within the relative coordinate space of that element. For typical elements, (0,0) places the transform to the top left corner. Depending on what effect you want, you might choose to change **RenderTransformOrigin** rather than adjusting the **CenterX** and **CenterY** values on transforms. Note that if you apply both **RenderTransformOrigin** and **CenterX** / **CenterY** values, the results can be pretty confusing, especially if you're animating any of the values.
-
-For hit-testing purposes, an object to which a transform is applied continues to respond to input in an expected way that's consistent to its visual appearance in x-y space. For example, if you've used a [**TranslateTransform**](/uwp/api/Windows.UI.Xaml.Media.TranslateTransform) to move a [**Rectangle**](/uwp/api/Windows.UI.Xaml.Shapes.Rectangle) 400 pixels laterally in the UI, that **Rectangle** responds to [**PointerPressed**](/uwp/api/windows.ui.xaml.uielement.pointerpressed) events when the user presses the point where the **Rectangle** appears visually. You won't get false events if the user presses the area where the **Rectangle** was before being translated. For any z-index considerations that affect hit testing, applying a transform makes no difference; the z-index that governs which element handles input events for a point in x-y space is still evaluated using the child order as declared in a container. That order is usually the same as the order in which you declare the elements in XAML, although for child elements of a [**Canvas**](/uwp/api/Windows.UI.Xaml.Controls.Canvas) object you can adjust the order by applying the [**Canvas.ZIndex**](/previous-versions/windows/silverlight/dotnet-windows-silverlight/cc190397(v=vs.95)) attached property to child elements.
-
-## Other transform properties
-
-- [**Brush.Transform**](/uwp/api/windows.ui.xaml.media.brush.transform), [**Brush.RelativeTransform**](/uwp/api/windows.ui.xaml.media.brush.relativetransform): These influence how a [**Brush**](/uwp/api/Windows.UI.Xaml.Media.Brush) uses coordinate space within the area that the **Brush** is applied to set visual properties such as foregrounds and backgrounds. These transforms aren't relevant for the most common brushes (which are typically setting solid colors with [**SolidColorBrush**](/uwp/api/Windows.UI.Xaml.Media.SolidColorBrush)) but might be occasionally useful when painting areas with an [**ImageBrush**](/uwp/api/Windows.UI.Xaml.Media.ImageBrush) or [**LinearGradientBrush**](/uwp/api/Windows.UI.Xaml.Media.LinearGradientBrush).
-- [**Geometry.Transform**](/uwp/api/windows.ui.xaml.media.geometry.transform): You might use this property to apply a transform to a geometry prior to using that geometry for a [**Path.Data**](/uwp/api/windows.ui.xaml.shapes.path.data) property value.
-
-## Animating a transform
-
-[**Transform**](/uwp/api/Windows.UI.Xaml.Media.Transform) objects can be animated. To animate a **Transform**, apply an animation of a compatible type to the property you want to animate. This typically means you're using [**DoubleAnimation**](/uwp/api/Windows.UI.Xaml.Media.Animation.DoubleAnimation) or [**DoubleAnimationUsingKeyFrames**](/uwp/api/windows.ui.xaml.media.animation.doubleanimationusingkeyframes) objects to define the animation, because all of the transform properties are of type [**Double**](/dotnet/api/system.double). Animations that affect a transform that's used for a [**UIElement.RenderTransform**](/uwp/api/windows.ui.xaml.uielement.rendertransform) value are not considered to be dependent animations, even if they have a nonzero duration. For more info about dependent animations, see [Storyboarded animations](../motion/storyboarded-animations.md).
-
-If you animate properties to produce an effect similar to a transform in terms of the net visual appearance—for example, animating the [**Width**](/uwp/api/Windows.UI.Xaml.FrameworkElement.Width) and [**Height**](/uwp/api/Windows.UI.Xaml.FrameworkElement.Height) of a [**FrameworkElement**](/uwp/api/Windows.UI.Xaml.FrameworkElement) rather than applying a [**TranslateTransform**](/uwp/api/Windows.UI.Xaml.Media.TranslateTransform)—such animations are almost always treated as dependent animations. You'd have to enable the animations and there could be significant performance issues with the animation, especially if you're trying to support user interaction while that object is being animated. For that reason it's preferable to use a transform and animate it rather than animating any other property where the animation would be treated as a dependent animation.
-
-To target the transform, there must be an existing [**Transform**](/uwp/api/Windows.UI.Xaml.Media.Transform) as the value for [**RenderTransform**](/uwp/api/windows.ui.xaml.uielement.rendertransform). You typically put an element for the appropriate transform type in the initial XAML, sometimes with no properties set on that transform.
-
-You typically use an indirect targeting technique to apply animations to the properties of a transform. For more info about indirect targeting syntax, see [Storyboarded animations](../motion/storyboarded-animations.md) and [Property-path syntax](/windows/uwp/xaml-platform/property-path-syntax).
-
-Default styles for controls sometimes define animations of transforms as part of their visual-state behavior. For example, the visual states for [**ProgressRing**](/uwp/api/Windows.UI.Xaml.Controls.ProgressRing) use animated [**RotateTransform**](/uwp/api/Windows.UI.Xaml.Media.RotateTransform) values to "spin" the dots in the ring.
-
-Here's a simple example of how to animate a transform. In this case, it's animating the [**Angle**](/uwp/api/windows.ui.xaml.media.rotatetransform.angle) of a [**RotateTransform**](/uwp/api/Windows.UI.Xaml.Media.RotateTransform) to spin a [**Rectangle**](/uwp/api/Windows.UI.Xaml.Shapes.Rectangle) in place around its visual center. This example names the **RotateTransform** so doesn't need indirect animation targeting, but you could alternatively leave the transform unnamed, name the element that the transform's applied to, and use indirect targeting such as `(UIElement.RenderTransform).(RotateTransform.Angle)`.
-
-```xml
-
-
-
-
-
-
-
-
-
-
-
-
-```
-
-```xml
-void StartAnimation (object sender, RoutedEventArgs e) {
- myStoryboard.Begin();
-}
-```
-
-## Accounting for coordinate frames of reference at run time
-
-[**UIElement**](/uwp/api/Windows.UI.Xaml.UIElement) has a method named [**TransformToVisual**](/uwp/api/windows.ui.xaml.uielement.transformtovisual), which can generate a [**Transform**](/uwp/api/Windows.UI.Xaml.Media.Transform) that correlates the coordinate frames of reference for two UI elements. You can use this to compare an element to the app's default coordinate frame of reference if you pass the root visual as the first parameter. This can be useful if you've captured an input event from a different element, or if you are trying to predict layout behavior without actually requesting a layout pass.
-
-Event data obtained from pointer events provides access to a [**GetCurrentPoint**](/uwp/api/windows.ui.input.pointerpoint.getcurrentpoint) method, where you can specify a *relativeTo* parameter to change the coordinate frame of reference to a specific element rather than the app default. This approach simply applies a translate transform internally and transforms the x-y coordinate data for you when it creates the returned [**PointerPoint**](/uwp/api/Windows.UI.Input.PointerPoint) object.
-
-## Describing a transform mathematically
-
-A transform can be described in terms of a transformation matrix. A 3×3 matrix is used to describe the transformations in a two-dimensional, x-y plane. Affine transformation matrices can be multiplied to form any number of linear transformations, such as rotation and skew (shear), followed by translation. The final column of an affine transformation matrix is equal to (0, 0, 1), so you need to specify only the members of the first two columns in the mathematical description.
-
-The mathematical description of a transform might be useful to you if you have a mathematical background or a familiarity with graphics-programming techniques that also use matrices to describe transformations of coordinate space. There's a [**Transform**](/uwp/api/Windows.UI.Xaml.Media.Transform)-derived class that enables you to express a transformation directly in terms of its 3×3 matrix: [**MatrixTransform**](/uwp/api/Windows.UI.Xaml.Media.MatrixTransform). **MatrixTransform** has a [**Matrix**](/uwp/api/windows.ui.xaml.media.matrixtransform.matrix) property, which holds a structure that has six properties: [**M11**](/uwp/api/windows.ui.xaml.media.matrix.m11), [**M12**](/uwp/api/windows.ui.xaml.media.matrix.m12), [**M21**](/uwp/api/windows.ui.xaml.media.matrix.m21), [**M22**](/uwp/api/windows.ui.xaml.media.matrix.m22), [**OffsetX**](/uwp/api/windows.ui.xaml.media.matrix.offsetx) and [**OffsetY**](/uwp/api/windows.ui.xaml.media.matrix.offsety). Each [**Matrix**](/uwp/api/Windows.UI.Xaml.Media.Matrix) property uses a **Double** value and corresponds to the six relevant values (columns 1 and 2) of an affine transformation matrix.
-
-| Column 1 | Column 2 | Column 3 |
-|---------------------------------------------|---------------------------------------------|-----|
-| [**M11**](/uwp/api/windows.ui.xaml.media.matrix.m11) | [**M12**](/uwp/api/windows.ui.xaml.media.matrix.m12) | 0 |
-| [**M21**](/uwp/api/windows.ui.xaml.media.matrix.m21) | [**M22**](/uwp/api/windows.ui.xaml.media.matrix.m22) | 0 |
-| [**OffsetX**](/uwp/api/windows.ui.xaml.media.matrix.offsetx) | [**OffsetY**](/uwp/api/windows.ui.xaml.media.matrix.offsety) | 1 |
-
-
-
-Any transform that you could describe with a [**TranslateTransform**](/uwp/api/Windows.UI.Xaml.Media.TranslateTransform), [**ScaleTransform**](/uwp/api/Windows.UI.Xaml.Media.ScaleTransform), [**RotateTransform**](/uwp/api/Windows.UI.Xaml.Media.RotateTransform), or [**SkewTransform**](/uwp/api/Windows.UI.Xaml.Media.SkewTransform) object could be described equally by a [**MatrixTransform**](/uwp/api/Windows.UI.Xaml.Media.MatrixTransform) with a [**Matrix**](/uwp/api/Windows.UI.Xaml.Media.Matrix) value. But you typically just use **TranslateTransform** and the others because the properties on those transform classes are easier to conceptualize than setting the vector components in a **Matrix**. It's also easier to animate the discrete properties of transforms; a **Matrix** is actually a structure and not a [**DependencyObject**](/uwp/api/Windows.UI.Xaml.DependencyObject), so it can't support animated individual values.
-
-Some XAML design tools that enable you to apply transformation operations will serialize the results as a [**MatrixTransform**](/uwp/api/Windows.UI.Xaml.Media.MatrixTransform). In this case it may be best to use the same design tool again to change the transformation effect and serialize the XAML again, rather than trying to manipulate the [**Matrix**](/uwp/api/Windows.UI.Xaml.Media.Matrix) values yourself directly in the XAML.
-
-## 3-D transforms
-
-In Windows 10, XAML introduced a new property, [**UIElement.Transform3D**](/uwp/api/windows.ui.xaml.uielement.transform3d), that can be used to create 3D effects with UI. To do this, use [**PerspectiveTransform3D**](/uwp/api/windows.ui.xaml.media.media3d.perspectivetransform3d) to add a shared 3D perspective or "camera" to your scene, and then use [**CompositeTransform3D**](/uwp/api/windows.ui.xaml.media.media3d.compositetransform3d) to transform an element in 3D space, like you would use [**CompositeTransform**](/uwp/api/Windows.UI.Xaml.Media.CompositeTransform). See [**UIElement.Transform3D**](/uwp/api/windows.ui.xaml.uielement.transform3d) for a discussion of how to implement 3D transforms.
-
- For simpler 3D effects that only apply to a single object, the [**UIElement.Projection**](/uwp/api/windows.ui.xaml.uielement.projection) property can be used. Using a [**PlaneProjection**](/uwp/api/Windows.UI.Xaml.Media.PlaneProjection) as the value for this property is equivalent to applying a fixed perspective transform and one or more 3D transforms to the element. This type of transform is described in more detail in [3-D perspective effects for XAML UI](3-d-perspective-effects.md).
-
-## Related topics
-
-* [**UIElement.Transform3D**](/uwp/api/windows.ui.xaml.uielement.transform3d)
-* [3-D perspective effects for XAML UI](3-d-perspective-effects.md)
-* [**Transform**](/uwp/api/Windows.UI.Xaml.Media.Transform)
-
-
diff --git a/hub/apps/design/motion/connected-animation.md b/hub/apps/design/motion/connected-animation.md
index 79ea438aec..0ce502c26c 100644
--- a/hub/apps/design/motion/connected-animation.md
+++ b/hub/apps/design/motion/connected-animation.md
@@ -2,11 +2,8 @@
description: Connected animations let you create a dynamic and compelling navigation experience by animating the transition of an element between two different views.
title: Connected animation
template: detail.hbs
-ms.date: 09/24/2020
+ms.date: 10/29/2025
ms.topic: article
-keywords: windows 10, uwp
-pm-contact: stmoy
-design-contact: conrwi
doc-status: Published
ms.localizationpriority: medium
---
@@ -16,24 +13,14 @@ Connected animations let you create a dynamic and compelling navigation experien
In a connected animation, an element appears to "continue" between two views during a change in UI content, flying across the screen from its location in the source view to its destination in the new view. This emphasizes the common content between the views and creates a beautiful and dynamic effect as part of a transition.
-> **Important APIs**: [ConnectedAnimation class](/uwp/api/windows.ui.xaml.media.animation.connectedanimation), [ConnectedAnimationService class](/uwp/api/windows.ui.xaml.media.animation.connectedanimationservice)
+> [!div class="checklist"]
+>
+> - **Important APIs**: [ConnectedAnimation class](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.connectedanimation), [ConnectedAnimationService class](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.connectedanimationservice)
+> [!div class="nextstepaction"]
+> [Open the WinUI 3 Gallery app and see Implicit Transitions in action](winui3gallery://item/ConnectedAnimation)
-## Examples
-
-
+[!INCLUDE [winui-3-gallery](../../../includes/winui-3-gallery.md)]
In this short video, an app uses a connected animation to animate an item image as it "continues" to become part of the header of the next page. The effect helps maintain user context across the transition.
@@ -41,46 +28,42 @@ In this short video, an app uses a connected animation to animate an item image
## Connected animation and the Fluent Design System
- The Fluent Design System helps you create modern, bold UI that incorporates light, depth, motion, material, and scale. Connected animation is a Fluent Design System component that adds motion to your app. To learn more, see the [Fluent Design overview](../index.md).
+ The Fluent Design System helps you create modern, bold UI that incorporates light, depth, motion, material, and scale. Connected animation is a Fluent Design System component that adds motion to your app. To learn more, see [Design for Windows apps](../index.md).
## Why connected animation?
-When navigating between pages, it’s important for the user to understand what new content is being presented after the navigation and how it relates to their intent when navigating. Connected animations provide a powerful visual metaphor that emphasizes the relationship between two views by drawing the user’s focus to the content shared between them. Additionally, connected animations add visual interest and polish to page navigation that can help differentiate the motion design of your app.
+When navigating between pages, it's important for the user to understand what new content is being presented after the navigation and how it relates to their intent when navigating. Connected animations provide a powerful visual metaphor that emphasizes the relationship between two views by drawing the user's focus to the content shared between them. Additionally, connected animations add visual interest and polish to page navigation that can help differentiate the motion design of your app.
## When to use connected animation
-Connected animations are generally used when changing pages, though they can be applied to any experience where you are changing content in a UI and want the user to maintain context. You should consider using a connected animation instead of a [drill in navigation transition](/uwp/api/Windows.UI.Xaml.Media.Animation.NavigationThemeTransition) whenever there is an image or other piece of UI shared between the source and destination views.
+Connected animations are generally used when changing pages, though they can be applied to any experience where you are changing content in a UI and want the user to maintain context. You should consider using a connected animation instead of a [drill in navigation transition](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.navigationthemetransition) whenever there is an image or other piece of UI shared between the source and destination views.
## Configure connected animation
-> [!IMPORTANT]
-> This feature requires that your app's Target version be Windows 10, version 1809 ([SDK 17763](https://developer.microsoft.com/windows/downloads/windows-10-sdk)) or later. The Configuration property is not available in earlier SDKs. You can target a Minimum version lower than SDK 17763 using adaptive code or conditional XAML. For more info, see [Version adaptive apps](/windows/uwp/debug-test-perf/version-adaptive-apps).
-
-Starting in Windows 10, version 1809, connected animations further embody Fluent design by providing animation configurations tailored specifically for forward and backwards page navigation.
+Connected animations further embody Fluent design by providing animation configurations tailored specifically for forward and backwards page navigation.
-You specify an animation configuration by setting the Configuration property on the ConnectedAnimation. (We’ll show examples of this in the next section.)
+You specify an animation configuration by setting the Configuration property on the ConnectedAnimation. (We'll show examples of this in the next section.)
This table describes the available configurations. For more information about the motion principles applied in these animations, see [Directionality and gravity](index.md).
-| [GravityConnectedAnimationConfiguration](/uwp/api/windows.ui.xaml.media.animation.gravityconnectedanimationconfiguration) |
+| [GravityConnectedAnimationConfiguration](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.gravityconnectedanimationconfiguration) |
| - |
-| This is the default configuration, and is recommended for forward navigation. |
-As the user navigates forward in the app (A to B), the connected element appears to physically “pull off the page”. In doing so, the element appears to move forward in z-space and drops a bit as an effect of gravity taking hold. To overcome the effects of gravity, the element gains velocity and accelerates into its final position. The result is a “scale and dip” animation. |
+| This is the default configuration, and is recommended for forward navigation. As the user navigates forward in the app (A to B), the connected element appears to physically “pull off the page”. In doing so, the element appears to move forward in z-space and drops a bit as an effect of gravity taking hold. To overcome the effects of gravity, the element gains velocity and accelerates into its final position. The result is a “scale and dip” animation. |
-| [DirectConnectedAnimationConfiguration](/uwp/api/windows.ui.xaml.media.animation.directconnectedanimationconfiguration) |
+| [DirectConnectedAnimationConfiguration](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.directconnectedanimationconfiguration) |
| - |
| As the user navigates backwards in the app (B to A), the animation is more direct. The connected element linearly translates from B to A using a decelerate cubic Bezier easing function. The backwards visual affordance returns the user to their previous state as fast as possible while still maintaining the context of the navigation flow. |
-| [BasicConnectedAnimationConfiguration](/uwp/api/windows.ui.xaml.media.animation.basicconnectedanimationconfiguration) |
+| [BasicConnectedAnimationConfiguration](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.basicconnectedanimationconfiguration) |
| - |
| This is the default (and only) animation used in versions prior to Windows 10, version 1809 ([SDK 17763](https://developer.microsoft.com/windows/downloads/windows-10-sdk)). |
### ConnectedAnimationService configuration
-The [ConnectedAnimationService](/uwp/api/windows.ui.xaml.media.animation.connectedanimationservice) class has two properties that apply to the individual animations rather than the overall service.
+The [ConnectedAnimationService](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.connectedanimationservice) class has two properties that apply to the individual animations rather than the overall service.
-- [DefaultDuration](/uwp/api/windows.ui.xaml.media.animation.connectedanimationservice.defaultduration)
-- [DefaultEasingFunction](/uwp/api/windows.ui.xaml.media.animation.connectedanimationservice.defaulteasingfunction)
+- [DefaultDuration](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.connectedanimationservice.defaultduration)
+- [DefaultEasingFunction](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.connectedanimationservice.defaulteasingfunction)
To achieve the various effects, some configurations ignore these properties on ConnectedAnimationService and use their own values instead, as described in this table.
@@ -97,14 +80,14 @@ Setting up a connected animation involves two steps:
1. *Prepare* an animation object on the source page, which indicates to the system that the source element will participate in the connected animation.
1. *Start* the animation on the destination page, passing a reference to the destination element.
-When navigating from the source page, call [ConnectedAnimationService.GetForCurrentView](/uwp/api/windows.ui.xaml.media.animation.connectedanimationservice.getforcurrentview) to get an instance of ConnectedAnimationService. To prepare an animation, call [PrepareToAnimate](/uwp/api/windows.ui.xaml.media.animation.connectedanimationservice.preparetoanimate) on this instance, and pass in a unique key and the UI element you want to use in the transition. The unique key lets you retrieve the animation later on the destination page.
+When navigating from the source page, call [ConnectedAnimationService.GetForCurrentView](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.connectedanimationservice.getforcurrentview) to get an instance of ConnectedAnimationService. To prepare an animation, call [PrepareToAnimate](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.connectedanimationservice.preparetoanimate) on this instance, and pass in a unique key and the UI element you want to use in the transition. The unique key lets you retrieve the animation later on the destination page.
```csharp
ConnectedAnimationService.GetForCurrentView()
.PrepareToAnimate("forwardAnimation", SourceImage);
```
-When the navigation occurs, start the animation in the destination page. To start the animation, call [ConnectedAnimation.TryStart](/uwp/api/windows.ui.xaml.media.animation.connectedanimation.trystart). You can retrieve the right animation instance by calling [ConnectedAnimationService.GetAnimation](/uwp/api/windows.ui.xaml.media.animation.connectedanimationservice.getanimation) with the unique key you provided when creating the animation.
+When the navigation occurs, start the animation in the destination page. To start the animation, call [ConnectedAnimation.TryStart](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.connectedanimation.trystart). You can retrieve the right animation instance by calling [ConnectedAnimationService.GetAnimation](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.connectedanimationservice.getanimation) with the unique key you provided when creating the animation.
```csharp
ConnectedAnimation animation =
@@ -119,7 +102,7 @@ if (animation != null)
This example shows how to use ConnectedAnimationService to create a transition for forward navigation between two pages (Page_A to Page_B).
-The recommended animation configuration for forward navigation is [GravityConnectedAnimationConfiguration](/uwp/api/windows.ui.xaml.media.animation.gravityconnectedanimationconfiguration). This is the default, so you don't need to set the [Configuration](/uwp/api/windows.ui.xaml.media.animation.connectedanimation.configuration) property unless you want to specify a different configuration.
+The recommended animation configuration for forward navigation is [GravityConnectedAnimationConfiguration](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.gravityconnectedanimationconfiguration). This is the default, so you don't need to set the [Configuration](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.connectedanimation.configuration) property unless you want to specify a different configuration.
Set up the animation in the source page.
@@ -186,7 +169,7 @@ protected override void OnNavigatedTo(NavigationEventArgs e)
For back navigation (Page_B to Page_A), you follow the same steps, but the source and destination pages are reversed.
-When the user navigates back, they expect the app to be returned to the previous state as soon as possible. Therefore, the recommended configuration is [DirectConnectedAnimationConfiguration](/uwp/api/windows.ui.xaml.media.animation.directconnectedanimationconfiguration). This animation is quicker, more direct, and uses the decelerate easing.
+When the user navigates back, they expect the app to be returned to the previous state as soon as possible. Therefore, the recommended configuration is [DirectConnectedAnimationConfiguration](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.directconnectedanimationconfiguration). This animation is quicker, more direct, and uses the decelerate easing.
Set up the animation in the source page.
@@ -224,11 +207,11 @@ protected override void OnNavigatedTo(NavigationEventArgs e)
}
```
-Between the time that the animation is set up and when it's started, the source element appears frozen above other UI in the app. This lets you perform any other transition animations simultaneously. For this reason, you shouldn't wait more than ~250 milliseconds in between the two steps because the presence of the source element may become distracting. If you prepare an animation and do not start it within three seconds, the system will dispose of the animation and any subsequent calls to [TryStart](/uwp/api/windows.ui.xaml.media.animation.connectedanimation.trystart) will fail.
+Between the time that the animation is set up and when it's started, the source element appears frozen above other UI in the app. This lets you perform any other transition animations simultaneously. For this reason, you shouldn't wait more than ~250 milliseconds in between the two steps because the presence of the source element may become distracting. If you prepare an animation and do not start it within three seconds, the system will dispose of the animation and any subsequent calls to [TryStart](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.connectedanimation.trystart) will fail.
## Connected animation in list and grid experiences
-Often, you will want to create a connected animation from or to a list or grid control. You can use the two methods on [ListView](/uwp/api/windows.ui.xaml.controls.listview) and [GridView](/uwp/api/windows.ui.xaml.controls.gridview), [PrepareConnectedAnimation](/uwp/api/windows.ui.xaml.controls.listviewbase.prepareconnectedanimation) and [TryStartConnectedAnimationAsync](/uwp/api/windows.ui.xaml.controls.listviewbase.trystartconnectedanimationasync), to simplify this process.
+Often, you will want to create a connected animation from or to a list or grid control. You can use the two methods on [ListView](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.listview) and [GridView](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.gridview), [PrepareConnectedAnimation](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.listviewbase.prepareconnectedanimation) and [TryStartConnectedAnimationAsync](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.listviewbase.trystartconnectedanimationasync), to simplify this process.
For example, say you have a **ListView** that contains an element with the name "PortraitEllipse" in its data template.
@@ -245,7 +228,7 @@ For example, say you have a **ListView** that contains an element with the name
```
-To prepare a connected animation with the ellipse corresponding to a given list item, call the [PrepareConnectedAnimation](/uwp/api/windows.ui.xaml.controls.listviewbase.prepareconnectedanimation) method with a unique key, the item, and the name "PortraitEllipse".
+To prepare a connected animation with the ellipse corresponding to a given list item, call the [PrepareConnectedAnimation](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.listviewbase.prepareconnectedanimation) method with a unique key, the item, and the name "PortraitEllipse".
```csharp
void PrepareAnimationWithItem(ContactsItem item)
@@ -254,7 +237,7 @@ void PrepareAnimationWithItem(ContactsItem item)
}
```
-To start an animation with this element as the destination, such as when navigating back from a detail view, use [TryStartConnectedAnimationAsync](/uwp/api/windows.ui.xaml.controls.listviewbase.trystartconnectedanimationasync). If you have just loaded the data source for the ListView, TryStartConnectedAnimationAsync will wait to start the animation until the corresponding item container has been created.
+To start an animation with this element as the destination, such as when navigating back from a detail view, use [TryStartConnectedAnimationAsync](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.listviewbase.trystartconnectedanimationasync). If you have just loaded the data source for the ListView, TryStartConnectedAnimationAsync will wait to start the animation until the corresponding item container has been created.
```csharp
private async void ContactsListView_Loaded(object sender, RoutedEventArgs e)
@@ -278,7 +261,7 @@ private async void ContactsListView_Loaded(object sender, RoutedEventArgs e)

-A *coordinated animation* is a special type of entrance animation where an element appears along with the connected animation target, animating in tandem with the connected animation element as it moves across the screen. Coordinated animations can add more visual interest to a transition and further draw the user’s attention to the context that is shared between the source and destination views. In these images, the caption UI for the item is animating using a coordinated animation.
+A *coordinated animation* is a special type of entrance animation where an element appears along with the connected animation target, animating in tandem with the connected animation element as it moves across the screen. Coordinated animations can add more visual interest to a transition and further draw the user's attention to the context that is shared between the source and destination views. In these images, the caption UI for the item is animating using a coordinated animation.
When a coordinated animation uses the gravity configuration, gravity is applied to both the connected animation element and the coordinated elements. The coordinated elements will "swoop" alongside the connected element so the elements stay truly coordinated.
@@ -301,25 +284,34 @@ void OnNavigatedTo(NavigationEventArgs e)
if (animation != null)
{
- // Don’t need to capture the return value as we are not scheduling any subsequent
- // animations
+ // Don't need to capture the return value as we are not scheduling
+ // any subsequent animations.
animation.TryStart(CoverImage, new UIElement[] { DescriptionRoot });
}
}
```
-## Do’s and don’ts
+## Recommendations
- Use a connected animation in page transitions where an element is shared between the source and destination pages.
-- Use [GravityConnectedAnimationConfiguration](/uwp/api/windows.ui.xaml.media.animation.gravityconnectedanimationconfiguration) for forward navigation.
-- Use [DirectConnectedAnimationConfiguration](/uwp/api/windows.ui.xaml.media.animation.directconnectedanimationconfiguration) for back navigation.
+- Use [GravityConnectedAnimationConfiguration](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.gravityconnectedanimationconfiguration) for forward navigation.
+- Use [DirectConnectedAnimationConfiguration](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.directconnectedanimationconfiguration) for back navigation.
- Don't wait on network requests or other long-running asynchronous operations in between preparing and starting a connected animation. You may need to pre-load the necessary information to run the transition ahead of time, or use a low-resolution placeholder image while a high-resolution image loads in the destination view.
-- Use [SuppressNavigationTransitionInfo](/uwp/api/windows.ui.xaml.media.animation.suppressnavigationtransitioninfo) to prevent a transition animation in a **Frame** if you are using **ConnectedAnimationService**, since connected animations aren't meant to be used simultaneously with the default navigation transitions. See [NavigationThemeTransition](/uwp/api/Windows.UI.Xaml.Media.Animation.NavigationThemeTransition) for more info on how to use navigation transitions.
+- Use [SuppressNavigationTransitionInfo](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.suppressnavigationtransitioninfo) to prevent a transition animation in a **Frame** if you are using **ConnectedAnimationService**, since connected animations aren't meant to be used simultaneously with the default navigation transitions. See [NavigationThemeTransition](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.navigationthemetransition) for more info on how to use navigation transitions.
+
+## UWP and WinUI 2
+
+[!INCLUDE [uwp-winui2-note](../../../includes/uwp-winui-2-note.md)]
+
+> [!div class="checklist"]
+>
+> - **Platform APIs**: [ConnectedAnimation class](/uwp/api/windows.ui.xaml.media.animation.connectedanimation), [ConnectedAnimationService class](/uwp/api/windows.ui.xaml.media.animation.connectedanimationservice)
+> - [Open the WinUI 2 Gallery app and see Implicit Transitions in action](winui2gallery://item/ConnectedAnimation). [!INCLUDE [winui-2-gallery](../../../includes/winui-2-gallery.md)]
## Related articles
-[ConnectedAnimation](/uwp/api/windows.ui.xaml.media.animation.connectedanimation)
+[ConnectedAnimation](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.connectedanimation)
-[ConnectedAnimationService](/uwp/api/windows.ui.xaml.media.animation.connectedanimationservice)
+[ConnectedAnimationService](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.connectedanimationservice)
-[NavigationThemeTransition](/uwp/api/Windows.UI.Xaml.Media.Animation.NavigationThemeTransition)
\ No newline at end of file
+[NavigationThemeTransition](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.NavigationThemeTransition)
\ No newline at end of file
diff --git a/hub/apps/design/motion/directionality-and-gravity.md b/hub/apps/design/motion/directionality-and-gravity.md
index fab0cedbe8..5d96eafe81 100644
--- a/hub/apps/design/motion/directionality-and-gravity.md
+++ b/hub/apps/design/motion/directionality-and-gravity.md
@@ -3,12 +3,9 @@ title: Directionality and gravity - animation in Windows apps
description: Learn about using direction of movement, direction of navigation, and gravity in animated scenes by viewing examples.
label: Directionality and gravity
template: detail.hbs
-ms.date: 09/24/2020
+ms.date: 09/18/2024
ms.topic: article
-keywords: windows 10, uwp
-pm-contact: stmoy
-design-contact: jeffarn
-doc-status: Draft
+doc-status: Published
ms.localizationpriority: medium
ms.custom: RS5
---
@@ -18,27 +15,12 @@ Directional signals help to solidify the mental model of the journey a user take
Directional movement is subject to forces like gravity. Applying forces to movement reinforces the natural feel of the motion.
-## Examples
-
-
-
## Direction of movement
:::row:::
:::column:::
Direction of movement corresponds to physical motion. Just like in nature, objects can move in any world axis - X,Y,Z. This is how we think of the movement of objects on the screen.
-When you move objects, avoid unnatural collisions. Keep in mind where objects come from and go to, and alway support higher level constructs that may be used in the scene, such as scroll direction or layout hierarchy.
+When you move objects, avoid unnatural collisions. Keep in mind where objects come from and go to, and always support higher level constructs that may be used in the scene, such as scroll direction or layout hierarchy.
:::column-end:::
:::column:::

@@ -116,5 +98,5 @@ Here, an element in the top row of the grid is affected by gravity, causing it t
## Related articles
-- [Motion overview](index.md)
+- [Motion overview](../signature-experiences/motion.md)
- [Timing and easing](timing-and-easing.md)
diff --git a/hub/apps/design/motion/images/edgevsreposition.png b/hub/apps/design/motion/images/edgevsreposition.png
deleted file mode 100644
index 2abdcc1918..0000000000
Binary files a/hub/apps/design/motion/images/edgevsreposition.png and /dev/null differ
diff --git a/hub/apps/design/motion/index.md b/hub/apps/design/motion/index.md
deleted file mode 100644
index f0b6039302..0000000000
--- a/hub/apps/design/motion/index.md
+++ /dev/null
@@ -1,87 +0,0 @@
----
-description: Purposeful, well-designed motion brings your app to life and makes the experience feel crafted and polished. Help users understand context changes, and tie experiences together with visual transitions.
-title: Motion for Windows apps
-ms.assetid: 21AA1335-765E-433A-85D8-560B340AE966
-label: Motion
-template: detail.hbs
-ms.date: 09/24/2020
-ms.topic: article
-keywords: windows 10, uwp
-pm-contact: stmoy
-design-contact: jeffarn
-doc-status: Published
-ms.localizationpriority: medium
-ms.custom: RS5
----
-
-# Motion for Windows apps
-
-Fluent motion serves a purpose in your app. It gives intelligent feedback based on the user's behavior, keeps the UI feeling alive, and guides the user's navigation through your app. Fluent motion elicits an emotional connection between a user and their digital experience. We build on a foundation of natural movement the user already understands from the physical world, and we extend our system from there.
-
-## Examples
-
-
-
-## Fluent motion principles
-
-### Physical
-
-Objects in motion exhibit behaviors of objects in the real world. Fluid, responsive movement makes the experience feel natural, creating emotional connections and adding personality.
-
-
-> When you interact with UI via touch, the movement of the UI is directly related to the velocity of the interaction. And because touch is direct manipulation, the object you interact with affects the objects around it.
-
-### Functional
-
-Motion serves a purpose and has conviction. It guides the user through complexity and helps establish hierarchy. Movement gives the impression of enhanced performance and optimizes the user experience by hiding perceived latency.
-
-
-> Page transitions are purpose-built. They give hints about how pages are related to each other. They move in a manner that's perceived as fast even when performance is not optimal.
-
-### Continuous
-
-Fluid movement from point to point naturally draws the eye and guides the user. It elegantly stitches together a user’s task, making it feel more consumable and friendly.
-
-
-> Objects can travel from scene to scene or morph within a scene to provide continuity and help the user maintain context.
-
-### Contextual
-
-Intelligent motion provides feedback to the user in a manner that's aligned with how they manipulated the UI. Interaction is centered around the user. The movement feels appropriate to the form-factor and designed around the scenario. It should be comfortable for each user.
-
-
-> Animation should tie back to the user interaction. A context menu is deployed from a point where the user activated it.
-
-## Motion articles
-
-:::row:::
- :::column:::
-### [Timing and easing](timing-and-easing.md)
-Timing and easing are important elements that make motion feel natural for objects entering, exiting, or moving within the UI.
- :::column-end:::
- :::column:::
-### [Directionality and gravity](directionality-and-gravity.md)
-Directional signals help provide a solid mental model of the journey a user takes across experiences. Directional movement is subject to forces like gravity, which reinforces the natural feel of the movement.
- :::column-end:::
-:::row-end:::
-:::row:::
- :::column:::
-### [Page transitions](page-transitions.md)
-Page transitions navigate users between pages in an app, providing feedback about the relationship between pages. They help users understand where they are in the navigation hierarchy.
- :::column-end:::
- :::column:::
-### [Connected animation](connected-animation.md)
-Connected animations let you create a dynamic and compelling navigation experience by animating the transition of an element between two different views.
- :::column-end:::
-:::row-end:::
diff --git a/hub/apps/design/motion/key-frame-and-easing-function-animations.md b/hub/apps/design/motion/key-frame-and-easing-function-animations.md
index a365e16122..cced5bb9f6 100644
--- a/hub/apps/design/motion/key-frame-and-easing-function-animations.md
+++ b/hub/apps/design/motion/key-frame-and-easing-function-animations.md
@@ -2,41 +2,38 @@
title: Key-frame animations and easing function animations
ms.assetid: D8AF24CD-F4C2-4562-AFD7-25010955D677
description: Linear key-frame animations, key-frame animations with a KeySpline value, or easing functions are three different techniques for approximately the same scenario.
-ms.date: 02/08/2017
+ms.date: 10/31/2025
ms.topic: article
-keywords: windows 10, uwp
ms.localizationpriority: medium
---
# Key-frame animations and easing function animations
-
-
Linear key-frame animations, key-frame animations with a **KeySpline** value, or easing functions are three different techniques for approximately the same scenario: creating a storyboarded animation that's a bit more complex, and that uses a nonlinear animation behavior from a starting state to an end state.
## Prerequisites
-Make sure you've read the [Storyboarded animations](storyboarded-animations.md) topic. This topic builds on the animation concepts that were explained in [Storyboarded animations](storyboarded-animations.md) and won't go over them again. For example, [Storyboarded animations](storyboarded-animations.md) describes how to target animations, storyboards as resources, the [**Timeline**](/uwp/api/Windows.UI.Xaml.Media.Animation.Timeline) property values such as [**Duration**](/uwp/api/windows.ui.xaml.media.animation.timeline.duration), [**FillBehavior**](/uwp/api/windows.ui.xaml.media.animation.timeline.fillbehavior), and so on.
+Make sure you've read the [Storyboarded animations](storyboarded-animations.md) topic. This topic builds on the animation concepts that were explained in [Storyboarded animations](storyboarded-animations.md) and won't go over them again. For example, [Storyboarded animations](storyboarded-animations.md) describes how to target animations, storyboards as resources, the [**Timeline**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.Timeline) property values such as [**Duration**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.timeline.duration), [**FillBehavior**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.timeline.fillbehavior), and so on.
## Animating using key-frame animations
-Key-frame animations permit more than one target value that is reached at a point along the animation timeline. In other words, each key frame can specify a different intermediate value, and the last key frame reached is the final animation value. By specifying multiple values to animate, you can make more complex animations. Key-frame animations also enable different interpolation logic, which are each implemented as a different **KeyFrame** subclass per animation type. Specifically, each key-frame animation type has a **Discrete**, **Linear**, **Spline** and **Easing** variation of its **KeyFrame** class for specifying its key frames. For example, to specify an animation that targets a [**Double**](/dotnet/api/system.double) and uses key frames, you could declare key frames with [**DiscreteDoubleKeyFrame**](/uwp/api/Windows.UI.Xaml.Media.Animation.DiscreteDoubleKeyFrame), [**LinearDoubleKeyFrame**](/uwp/api/Windows.UI.Xaml.Media.Animation.LinearDoubleKeyFrame), [**SplineDoubleKeyFrame**](/uwp/api/Windows.UI.Xaml.Media.Animation.SplineDoubleKeyFrame), and [**EasingDoubleKeyFrame**](/uwp/api/Windows.UI.Xaml.Media.Animation.EasingDoubleKeyFrame). You can use any and all of these types within a single **KeyFrames** collection, to change the interpolation each time a new key frame is reached.
+Key-frame animations permit more than one target value that is reached at a point along the animation timeline. In other words, each key frame can specify a different intermediate value, and the last key frame reached is the final animation value. By specifying multiple values to animate, you can make more complex animations. Key-frame animations also enable different interpolation logic, which are each implemented as a different **KeyFrame** subclass per animation type. Specifically, each key-frame animation type has a **Discrete**, **Linear**, **Spline** and **Easing** variation of its **KeyFrame** class for specifying its key frames. For example, to specify an animation that targets a [**Double**](/dotnet/api/system.double) and uses key frames, you could declare key frames with [**DiscreteDoubleKeyFrame**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.DiscreteDoubleKeyFrame), [**LinearDoubleKeyFrame**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.LinearDoubleKeyFrame), [**SplineDoubleKeyFrame**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.SplineDoubleKeyFrame), and [**EasingDoubleKeyFrame**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.EasingDoubleKeyFrame). You can use any and all of these types within a single **KeyFrames** collection, to change the interpolation each time a new key frame is reached.
For interpolation behavior, each key frame controls the interpolation until its **KeyTime** time is reached. Its **Value** is reached at that time also. If there are more key frames beyond, the value then becomes the starting value for the next key frame in a sequence.
At the start of the animation, if no key frame with **KeyTime** of "0:0:0" exists, the starting value is whatever the non-animated value of the property is. This is similar to how a **From**/**To**/**By** animation acts if there is no **From**.
-The duration of a key-frame animation is implicitly the duration equal to the highest **KeyTime** value set in any of its key frames. You can set an explicit [**Duration**](/uwp/api/windows.ui.xaml.media.animation.timeline.duration) if you want, but be careful it's not shorter than a **KeyTime** in your own key frames or you'll cut off part of the animation.
+The duration of a key-frame animation is implicitly the duration equal to the highest **KeyTime** value set in any of its key frames. You can set an explicit [**Duration**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.timeline.duration) if you want, but be careful it's not shorter than a **KeyTime** in your own key frames or you'll cut off part of the animation.
-In addition to [**Duration**](/uwp/api/windows.ui.xaml.media.animation.timeline.duration), you can set all the [**Timeline**](/uwp/api/Windows.UI.Xaml.Media.Animation.Timeline) based properties on a key-frame animation, like you can with a **From**/**To**/**By** animation, because the key-frame animation classes also derive from **Timeline**. These are:
+In addition to [**Duration**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.timeline.duration), you can set all the [**Timeline**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.Timeline) based properties on a key-frame animation, like you can with a **From**/**To**/**By** animation, because the key-frame animation classes also derive from **Timeline**. These are:
-- [**AutoReverse**](/uwp/api/windows.ui.xaml.media.animation.timeline.autoreverse): once the last key frame is reached, the frames are repeated in reverse order from the end. This doubles the apparent duration of the animation.
-- [**BeginTime**](/uwp/api/windows.ui.xaml.media.animation.timeline.begintime): delays the start of the animation. The timeline for the **KeyTime** values in the frames doesn't start counting until **BeginTime** is reached, so there's no risk of cutting off frames
-- [**FillBehavior**](/uwp/api/windows.ui.xaml.media.animation.timeline.fillbehavior): controls what happens when the last key frame is reached. **FillBehavior** has no effect on any intermediate key frames.
-- [**RepeatBehavior**](/uwp/api/windows.ui.xaml.media.animation.timeline.repeatbehaviorproperty):
- - If set to **Forever**, then the key frames and their timeline repeat infinitely.
- - If set to an iteration count, the timeline repeats that many times.
- - If set to a [**Duration**](/uwp/api/Windows.UI.Xaml.Duration), the timeline repeats until that time is reached. This might truncate the animation part way through the key frame sequence, if it's not an integer factor of the timeline's implicit duration.
-- [**SpeedRatio**](/uwp/api/windows.ui.xaml.media.animation.timeline.speedratioproperty) (not commonly used)
+- [**AutoReverse**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.timeline.autoreverse): once the last key frame is reached, the frames are repeated in reverse order from the end. This doubles the apparent duration of the animation.
+- [**BeginTime**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.timeline.begintime): delays the start of the animation. The timeline for the **KeyTime** values in the frames doesn't start counting until **BeginTime** is reached, so there's no risk of cutting off frames
+- [**FillBehavior**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.timeline.fillbehavior): controls what happens when the last key frame is reached. **FillBehavior** has no effect on any intermediate key frames.
+- [**RepeatBehavior**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.timeline.repeatbehaviorproperty):
+ - If set to **Forever**, then the key frames and their timeline repeat infinitely.
+ - If set to an iteration count, the timeline repeats that many times.
+ - If set to a [**Duration**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Duration), the timeline repeats until that time is reached. This might truncate the animation part way through the key frame sequence, if it's not an integer factor of the timeline's implicit duration.
+- [**SpeedRatio**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.timeline.speedratioproperty) (not commonly used)
### Linear key frames
@@ -65,13 +62,13 @@ Here's how to use a key-frame animation to scale the render height of a rectangl
Discrete key frames don't use any interpolation at all. When a **KeyTime** is reached, the new **Value** is simply applied. Depending on which UI property is being animated, this often produces an animation that appears to "jump". Be certain that this is the aesthetic behavior that you really want. You can minimize the apparent jumps by increasing the number of key frames you declare, but if a smooth animation is your goal, you might be better off using linear or spline key frames instead.
> [!NOTE]
-> Discrete key frames are the only way to animate a value that isn't of type [**Double**](/dotnet/api/system.double), [**Point**](/uwp/api/Windows.Foundation.Point), and [**Color**](/uwp/api/Windows.UI.Color), with a [**DiscreteObjectKeyFrame**](/uwp/api/Windows.UI.Xaml.Media.Animation.DiscreteObjectKeyFrame). We'll discuss this in more detail later in this topic.
+> Discrete key frames are the only way to animate a value that isn't of type [**Double**](/dotnet/api/system.double), [**Point**](/uwp/api/Windows.Foundation.Point), and [**Color**](/uwp/api/Windows.UI.Color), with a [**DiscreteObjectKeyFrame**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.DiscreteObjectKeyFrame). We'll discuss this in more detail later in this topic.
### Spline key frames
-A spline key frame creates a variable transition between values according to the value of the **KeySpline** property. This property specifies the first and second control points of a Bezier curve, which describes the acceleration of the animation. Basically, a [**KeySpline**](/uwp/api/Windows.UI.Xaml.Media.Animation.KeySpline) defines a function-over-time relationship where the function-time graph is the shape of that Bezier curve. You typically specify a **KeySpline** value in a XAML shorthand attribute string that has four [**Double**](/dotnet/api/system.double) values separated by spaces or commas. These values are "X,Y" pairs for two control points of the Bezier curve. "X" is time and "Y" is the function modifier to the value. Each value should always be between 0 and 1 inclusive. Without control point modification to a **KeySpline**, the straight line from 0,0 to 1,1 is the representation of a function over time for a linear interpolation. Your control points change the shape of that curve and thus the behavior of the function over time for the spline animation. It's probably best to see this visually as a graph. You can run the [Silverlight key-spline visualizer sample](https://samples.msdn.microsoft.com/Silverlight/SampleBrowser/index.htm#/?sref=KeySplineExample) in a browser to see how the control points modify the curve and how a sample animation runs when using it as a **KeySpline** value.
+A spline key frame creates a variable transition between values according to the value of the **KeySpline** property. This property specifies the first and second control points of a Bezier curve, which describes the acceleration of the animation. Basically, a [**KeySpline**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.KeySpline) defines a function-over-time relationship where the function-time graph is the shape of that Bezier curve. You typically specify a **KeySpline** value in a XAML shorthand attribute string that has four [**Double**](/dotnet/api/system.double) values separated by spaces or commas. These values are "X,Y" pairs for two control points of the Bezier curve. "X" is time and "Y" is the function modifier to the value. Each value should always be between 0 and 1 inclusive. Without control point modification to a **KeySpline**, the straight line from 0,0 to 1,1 is the representation of a function over time for a linear interpolation. Your control points change the shape of that curve and thus the behavior of the function over time for the spline animation. It's probably best to see this visually as a graph.
-This next example shows three different key frames applied to an animation, with the last one being a key spline animation for a [**Double**](/dotnet/api/system.double) value ([**SplineDoubleKeyFrame**](/uwp/api/Windows.UI.Xaml.Media.Animation.SplineDoubleKeyFrame)). Note the string "0.6,0.0 0.9,0.00" applied for **KeySpline**. This produces a curve where the animation appears to run slowly at first but then rapidly reaches the value just before the **KeyTime** is reached.
+This next example shows three different key frames applied to an animation, with the last one being a key spline animation for a [**Double**](/dotnet/api/system.double) value ([**SplineDoubleKeyFrame**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.SplineDoubleKeyFrame)). Note the string "0.6,0.0 0.9,0.00" applied for **KeySpline**. This produces a curve where the animation appears to run slowly at first but then rapidly reaches the value just before the **KeyTime** is reached.
```xml
@@ -103,11 +100,11 @@ This next example shows three different key frames applied to an animation, with
### Easing key frames
-An easing key frame is a key frame where interpolation is being applied, and the function over time of the interpolation is controlled by several pre-defined mathematical formulas. You can actually produce much the same result with a spline key frame as you can with some of the easing function types, but there are also some easing functions, such as [**BackEase**](/uwp/api/Windows.UI.Xaml.Media.Animation.BackEase), that you can't reproduce with a spline.
+An easing key frame is a key frame where interpolation is being applied, and the function over time of the interpolation is controlled by several pre-defined mathematical formulas. You can actually produce much the same result with a spline key frame as you can with some of the easing function types, but there are also some easing functions, such as [**BackEase**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.BackEase), that you can't reproduce with a spline.
To apply an easing function to an easing key frame, you set the **EasingFunction** property as a property element in XAML for that key frame. For the value, specify an object element for one of the easing function types.
-This example applies a [**CubicEase**](/uwp/api/Windows.UI.Xaml.Media.Animation.CubicEase) and then a [**BounceEase**](/uwp/api/Windows.UI.Xaml.Media.Animation.BounceEase) as successive key frames to a [**DoubleAnimation**](/uwp/api/Windows.UI.Xaml.Media.Animation.DoubleAnimation) to create a bouncing effect.
+This example applies a [**CubicEase**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.CubicEase) and then a [**BounceEase**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.BounceEase) as successive key frames to a [**DoubleAnimation**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.DoubleAnimation) to create a bouncing effect.
```xml
@@ -142,29 +139,29 @@ Easing functions allow you to apply custom mathematical formulas to your animati
Easing functions can be applied to animations in three ways:
-- By using an easing keyframe in a keyframe animation, as described in the previous section. Use [**EasingColorKeyFrame.EasingFunction**](/uwp/api/windows.ui.xaml.media.animation.easingcolorkeyframe.easingfunction), [**EasingDoubleKeyFrame.EasingFunction**](/uwp/api/windows.ui.xaml.media.animation.easingdoublekeyframe.easingfunction), or [**EasingPointKeyFrame.EasingFunction**](/uwp/api/windows.ui.xaml.media.animation.easingpointkeyframe.easingfunction).
-- By setting the **EasingFunction** property on one of the **From**/**To**/**By** animation types. Use [**ColorAnimation.EasingFunction**](/uwp/api/windows.ui.xaml.media.animation.coloranimation.easingfunction), [**DoubleAnimation.EasingFunction**](/uwp/api/windows.ui.xaml.media.animation.doubleanimation.easingfunction) or [**PointAnimation.EasingFunction**](/uwp/api/windows.ui.xaml.media.animation.pointanimation.easingfunction).
-- By setting [**GeneratedEasingFunction**](/uwp/api/windows.ui.xaml.visualtransition.generatedeasingfunction) as part of a [**VisualTransition**](/uwp/api/Windows.UI.Xaml.VisualTransition). This is specific to defining visual states for controls; for more info, see [**GeneratedEasingFunction**](/uwp/api/windows.ui.xaml.visualtransition.generatedeasingfunction) or [Storyboards for visual states](/previous-versions/windows/apps/jj819808(v=win.10)).
+- By using an easing keyframe in a keyframe animation, as described in the previous section. Use [**EasingColorKeyFrame.EasingFunction**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.easingcolorkeyframe.easingfunction), [**EasingDoubleKeyFrame.EasingFunction**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.easingdoublekeyframe.easingfunction), or [**EasingPointKeyFrame.EasingFunction**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.easingpointkeyframe.easingfunction).
+- By setting the **EasingFunction** property on one of the **From**/**To**/**By** animation types. Use [**ColorAnimation.EasingFunction**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.coloranimation.easingfunction), [**DoubleAnimation.EasingFunction**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.doubleanimation.easingfunction) or [**PointAnimation.EasingFunction**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.pointanimation.easingfunction).
+- By setting [**GeneratedEasingFunction**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.visualtransition.generatedeasingfunction) as part of a [**VisualTransition**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.VisualTransition). This is specific to defining visual states for controls; for more info, see [**GeneratedEasingFunction**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.visualtransition.generatedeasingfunction) or [Storyboards for visual states](/previous-versions/windows/apps/jj819808(v=win.10)).
Here is a list of the easing functions:
-- [**BackEase**](/uwp/api/Windows.UI.Xaml.Media.Animation.BackEase): Retracts the motion of an animation slightly before it begins to animate in the path indicated.
-- [**BounceEase**](/uwp/api/Windows.UI.Xaml.Media.Animation.BounceEase): Creates a bouncing effect.
-- [**CircleEase**](/uwp/api/Windows.UI.Xaml.Media.Animation.CircleEase): Creates an animation that accelerates or decelerates using a circular function.
-- [**CubicEase**](/uwp/api/Windows.UI.Xaml.Media.Animation.CubicEase): Creates an animation that accelerates or decelerates using the formula f(t) = t3.
-- [**ElasticEase**](/uwp/api/Windows.UI.Xaml.Media.Animation.ElasticEase): Creates an animation that resembles a spring oscillating back and forth until it comes to rest.
-- [**ExponentialEase**](/uwp/api/Windows.UI.Xaml.Media.Animation.ExponentialEase): Creates an animation that accelerates or decelerates using an exponential formula.
-- [**PowerEase**](/uwp/api/Windows.UI.Xaml.Media.Animation.PowerEase): Creates an animation that accelerates or decelerates using the formula f(t) = tp where p is equal to the [**Power**](/uwp/api/windows.ui.xaml.media.animation.powerease.power) property.
-- [**QuadraticEase**](/uwp/api/Windows.UI.Xaml.Media.Animation.QuadraticEase): Creates an animation that accelerates or decelerates using the formula f(t) = t2.
-- [**QuarticEase**](/uwp/api/Windows.UI.Xaml.Media.Animation.QuarticEase): Creates an animation that accelerates or decelerates using the formula f(t) = t4.
-- [**QuinticEase**](/uwp/api/Windows.UI.Xaml.Media.Animation.QuinticEase): Create an animation that accelerates or decelerates using the formula f(t) = t5.
-- [**SineEase**](/uwp/api/Windows.UI.Xaml.Media.Animation.SineEase): Creates an animation that accelerates or decelerates using a sine formula.
+- [**BackEase**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.BackEase): Retracts the motion of an animation slightly before it begins to animate in the path indicated.
+- [**BounceEase**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.BounceEase): Creates a bouncing effect.
+- [**CircleEase**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.CircleEase): Creates an animation that accelerates or decelerates using a circular function.
+- [**CubicEase**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.CubicEase): Creates an animation that accelerates or decelerates using the formula f(t) = t3.
+- [**ElasticEase**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.ElasticEase): Creates an animation that resembles a spring oscillating back and forth until it comes to rest.
+- [**ExponentialEase**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.ExponentialEase): Creates an animation that accelerates or decelerates using an exponential formula.
+- [**PowerEase**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.PowerEase): Creates an animation that accelerates or decelerates using the formula f(t) = tp where p is equal to the [**Power**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.powerease.power) property.
+- [**QuadraticEase**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.QuadraticEase): Creates an animation that accelerates or decelerates using the formula f(t) = t2.
+- [**QuarticEase**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.QuarticEase): Creates an animation that accelerates or decelerates using the formula f(t) = t4.
+- [**QuinticEase**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.QuinticEase): Create an animation that accelerates or decelerates using the formula f(t) = t5.
+- [**SineEase**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.SineEase): Creates an animation that accelerates or decelerates using a sine formula.
-Some of the easing functions have their own properties. For example, [**BounceEase**](/uwp/api/Windows.UI.Xaml.Media.Animation.BounceEase) has two properties [**Bounces**](/uwp/api/windows.ui.xaml.media.animation.bounceease.bounces) and [**Bounciness**](/uwp/api/windows.ui.xaml.media.animation.bounceease.bounciness) that modify the function-over-time behavior of that particular **BounceEase**. Other easing functions such as [**CubicEase**](/uwp/api/Windows.UI.Xaml.Media.Animation.CubicEase) don't have properties other than the [**EasingMode**](/uwp/api/windows.ui.xaml.media.animation.easingfunctionbase.easingmode) property that all easing functions share, and always produce the same function-over-time behavior.
+Some of the easing functions have their own properties. For example, [**BounceEase**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.BounceEase) has two properties [**Bounces**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.bounceease.bounces) and [**Bounciness**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.bounceease.bounciness) that modify the function-over-time behavior of that particular **BounceEase**. Other easing functions such as [**CubicEase**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.CubicEase) don't have properties other than the [**EasingMode**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.easingfunctionbase.easingmode) property that all easing functions share, and always produce the same function-over-time behavior.
-Some of these easing functions have a bit of overlap, depending on how you set properties on the easing functions that have properties. For example, [**QuadraticEase**](/uwp/api/Windows.UI.Xaml.Media.Animation.QuadraticEase) is exactly the same as a [**PowerEase**](/uwp/api/Windows.UI.Xaml.Media.Animation.PowerEase) with [**Power**](/uwp/api/windows.ui.xaml.media.animation.powerease.power) equal to 2. And [**CircleEase**](/uwp/api/Windows.UI.Xaml.Media.Animation.CircleEase) is basically a default-value [**ExponentialEase**](/uwp/api/Windows.UI.Xaml.Media.Animation.ExponentialEase).
+Some of these easing functions have a bit of overlap, depending on how you set properties on the easing functions that have properties. For example, [**QuadraticEase**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.QuadraticEase) is exactly the same as a [**PowerEase**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.PowerEase) with [**Power**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.powerease.power) equal to 2. And [**CircleEase**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.CircleEase) is basically a default-value [**ExponentialEase**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.ExponentialEase).
-The [**BackEase**](/uwp/api/Windows.UI.Xaml.Media.Animation.BackEase) easing function is unique because it can change the value outside of the normal range as set by **From**/**To** or values of key frames. It starts the animation by changing the value in the opposite direction as would be expected from a normal **From**/**To** behavior, goes back to the **From** or starting value again, and then runs the animation as normal.
+The [**BackEase**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.BackEase) easing function is unique because it can change the value outside of the normal range as set by **From**/**To** or values of key frames. It starts the animation by changing the value in the opposite direction as would be expected from a normal **From**/**To** behavior, goes back to the **From** or starting value again, and then runs the animation as normal.
In an earlier example, we showed how to declare an easing function for a key-frame animation. This next sample applies an easing function to a **From**/**To**/**By** animation.
@@ -186,15 +183,15 @@ In an earlier example, we showed how to declare an easing function for a key-fra
```
-When an easing function is applied to a **From**/**To**/**By** animation, it's changing the function- over-time characteristics of how the value interpolates between the **From** and **To** values over the [**Duration**](/uwp/api/windows.ui.xaml.media.animation.timeline.duration) of the animation. Without an easing function, that would be a linear interpolation.
+When an easing function is applied to a **From**/**To**/**By** animation, it's changing the function- over-time characteristics of how the value interpolates between the **From** and **To** values over the [**Duration**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.timeline.duration) of the animation. Without an easing function, that would be a linear interpolation.
## Discrete object value animations
-One type of animation deserves special mention because it's the only way you can apply an animated value to properties that aren't of type [**Double**](/dotnet/api/system.double), [**Point**](/uwp/api/Windows.Foundation.Point), or [**Color**](/uwp/api/Windows.UI.Color). This is the key-frame animation [**ObjectAnimationUsingKeyFrames**](/uwp/api/Windows.UI.Xaml.Media.Animation.ObjectAnimationUsingKeyFrames). Animating using [**Object**](/dotnet/api/system.object) values is different because there's no possibility of interpolating the values between the frames. When the frame's [**KeyTime**](/uwp/api/windows.ui.xaml.media.animation.objectkeyframe.keytime) is reached, the animated value is immediately set to the value specified in the key frame's **Value**. Because there's no interpolation, there's only one key frame you use in the **ObjectAnimationUsingKeyFrames** key frames collection: [**DiscreteObjectKeyFrame**](/uwp/api/Windows.UI.Xaml.Media.Animation.DiscreteObjectKeyFrame).
+One type of animation deserves special mention because it's the only way you can apply an animated value to properties that aren't of type [**Double**](/dotnet/api/system.double), [**Point**](/uwp/api/Windows.Foundation.Point), or [**Color**](/uwp/api/Windows.UI.Color). This is the key-frame animation [**ObjectAnimationUsingKeyFrames**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.ObjectAnimationUsingKeyFrames). Animating using [**Object**](/dotnet/api/system.object) values is different because there's no possibility of interpolating the values between the frames. When the frame's [**KeyTime**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.objectkeyframe.keytime) is reached, the animated value is immediately set to the value specified in the key frame's **Value**. Because there's no interpolation, there's only one key frame you use in the **ObjectAnimationUsingKeyFrames** key frames collection: [**DiscreteObjectKeyFrame**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.DiscreteObjectKeyFrame).
-The [**Value**](/uwp/api/windows.ui.xaml.media.animation.objectkeyframe.value) of a [**DiscreteObjectKeyFrame**](/uwp/api/Windows.UI.Xaml.Media.Animation.DiscreteObjectKeyFrame) is often set using property element syntax, because the object value you are trying to set often is not expressible as a string to fill **Value** in attribute syntax. You can still use attribute syntax if you use a reference such as [StaticResource](/windows/uwp/xaml-platform/staticresource-markup-extension).
+The [**Value**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.objectkeyframe.value) of a [**DiscreteObjectKeyFrame**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.DiscreteObjectKeyFrame) is often set using property element syntax, because the object value you are trying to set often is not expressible as a string to fill **Value** in attribute syntax. You can still use attribute syntax if you use a reference such as [StaticResource](/windows/apps/develop/platform/xaml/staticresource-markup-extension).
-One place you'll see an [**ObjectAnimationUsingKeyFrames**](/uwp/api/Windows.UI.Xaml.Media.Animation.ObjectAnimationUsingKeyFrames) used in the default templates is when a template property references a [**Brush**](/uwp/api/Windows.UI.Xaml.Media.Brush) resource. These resources are [**SolidColorBrush**](/uwp/api/Windows.UI.Xaml.Media.SolidColorBrush) objects, not just a [**Color**](/uwp/api/Windows.UI.Color) value, and they use resources that are defined as system themes ([**ThemeDictionaries**](/uwp/api/windows.ui.xaml.resourcedictionary.themedictionaries)). They can be assigned directly to a **Brush**-type value such as [**TextBlock.Foreground**](/uwp/api/windows.ui.xaml.controls.textblock.foreground) and don't need to use indirect targeting. But because a **SolidColorBrush** is not [**Double**](/dotnet/api/system.double), [**Point**](/uwp/api/Windows.Foundation.Point), or **Color**, you have to use a **ObjectAnimationUsingKeyFrames** to use the resource.
+One place you'll see an [**ObjectAnimationUsingKeyFrames**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.ObjectAnimationUsingKeyFrames) used in the default templates is when a template property references a [**Brush**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Brush) resource. These resources are [**SolidColorBrush**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.SolidColorBrush) objects, not just a [**Color**](/uwp/api/Windows.UI.Color) value, and they use resources that are defined as system themes ([**ThemeDictionaries**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.resourcedictionary.themedictionaries)). They can be assigned directly to a **Brush**-type value such as [**TextBlock.Foreground**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.textblock.foreground) and don't need to use indirect targeting. But because a **SolidColorBrush** is not [**Double**](/dotnet/api/system.double), [**Point**](/uwp/api/Windows.Foundation.Point), or **Color**, you have to use a **ObjectAnimationUsingKeyFrames** to use the resource.
```xml
```
-You also might use [**ObjectAnimationUsingKeyFrames**](/uwp/api/Windows.UI.Xaml.Media.Animation.ObjectAnimationUsingKeyFrames) to animate properties that use an enumeration value. Here's another example from a named style that comes from the Windows Runtime default templates. Note how it sets the [**Visibility**](/uwp/api/windows.ui.xaml.uielement.visibility) property that takes a [**Visibility**](/uwp/api/Windows.UI.Xaml.Visibility) enumeration constant. In this case you can set the value using attribute syntax. You only need the unqualified constant name from an enumeration for setting a property with an enumeration value, for example "Collapsed".
+You also might use [**ObjectAnimationUsingKeyFrames**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.ObjectAnimationUsingKeyFrames) to animate properties that use an enumeration value. Here's another example from a named style that comes from the Windows Runtime default templates. Note how it sets the [**Visibility**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.uielement.visibility) property that takes a [**Visibility**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.visibility) enumeration constant. In this case you can set the value using attribute syntax. You only need the unqualified constant name from an enumeration for setting a property with an enumeration value, for example "Collapsed".
```xml
```
-You can use more than one [**DiscreteObjectKeyFrame**](/uwp/api/Windows.UI.Xaml.Media.Animation.DiscreteObjectKeyFrame) for an [**ObjectAnimationUsingKeyFrames**](/uwp/api/Windows.UI.Xaml.Media.Animation.ObjectAnimationUsingKeyFrames) frame set. This might be an interesting way to create a "slide show" animation by animating the value of [**Image.Source**](/uwp/api/windows.ui.xaml.controls.image.source), as an example scenario for where multiple object values might be useful.
+You can use more than one [**DiscreteObjectKeyFrame**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.DiscreteObjectKeyFrame) for an [**ObjectAnimationUsingKeyFrames**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.objectanimationusingkeyframes) frame set. This might be an interesting way to create a "slide show" animation by animating the value of [**Image.Source**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.image.source), as an example scenario for where multiple object values might be useful.
- ## Related topics
+## Related topics
-* [Property-path syntax](/windows/uwp/xaml-platform/property-path-syntax)
-* [Dependency properties overview](/windows/uwp/xaml-platform/dependency-properties-overview)
-* [**Storyboard**](/uwp/api/Windows.UI.Xaml.Media.Animation.Storyboard)
-* [**Storyboard.TargetProperty**](/uwp/api/windows.ui.xaml.media.animation.storyboard.targetpropertyproperty)
+- [Property-path syntax](/windows/apps/develop/platform/xaml/property-path-syntax)
+- [Dependency properties overview](/windows/apps/develop/platform/xaml/dependency-properties-overview)
+- [Storyboard](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.storyboard)
+- [Storyboard.TargetProperty](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.storyboard.targetpropertyproperty)
diff --git a/hub/apps/design/motion/motion-dragdrop.md b/hub/apps/design/motion/motion-dragdrop.md
deleted file mode 100644
index 8aca49ec61..0000000000
--- a/hub/apps/design/motion/motion-dragdrop.md
+++ /dev/null
@@ -1,62 +0,0 @@
----
-description: Use drag-and-drop animations when users move objects, such as moving an item within a list, or dropping an item on top of another.
-title: Drag animations
-ms.assetid: 6064755F-6E24-4901-A4FF-263F05F0DFD6
-label: Motion--Drag and drop
-template: detail.hbs
-ms.date: 09/24/2020
-ms.topic: article
-keywords: windows 10, uwp
-ms.localizationpriority: medium
----
-# Drag animations
-
-
-
-
-Use drag-and-drop animations when users move objects, such as moving an item within a list, or dropping an item on top of another.
-
-> **Important APIs**: [**DragItemThemeAnimation class**](/uwp/api/windows.ui.xaml.media.animation.dragitemthemeanimation)
-
-
-## Do's and don'ts
-
-
-**Drag start animation**
-
-- Use the drag start animation when the user begins to move an object.
-- Include affected objects in the animation if and only if there are other objects that can be affected by the drag-and-drop operation.
-- Use the drag end animation to complete any animation sequence that began with the drag start animation. This reverses the size change in the dragged object that was caused by the drag start animation.
-
-**Drag end animation**
-
-- Use the drag end animation when the user drops a dragged object.
-- Use the drag end animation in combination with add and delete animations for lists.
-- Include affected objects in the drag end animation if and only if you included those same affected objects in the drag start animation.
-- Don't use the drag end animation if you have not first used the drag start animation. You need to use both animations to return objects to their original sizes after the drag sequence is complete.
-
-**Drag between enter animation**
-
-- Use the drag between enter animation when the user drags the drag source into a drop area where it can be dropped between two other objects.
-- Choose a reasonable drop target area. This area should not be so small that it is difficult for the user to position the drag source for the drop.
-- The recommended direction to move affected objects to show the drop area is directly apart from each other. Whether they move vertically or horizontally depends on the orientation of the affected objects to each other.
-- Don't use the drag between enter animation if the drag source cannot be dropped in an area. The drag between enter animation tells the user that the drag source can be dropped between the affected objects.
-
-**Drag between leave animation**
-
-- Use the drag between leave animation when the user drags an object away from an area where it could have been dropped between two other objects.
-- Don't use the drag between leave animation if you have not first used the drag between enter animation.
-
-
-## Related articles
-
-**For developers**
-* [Animations overview](./xaml-animation.md)
-* [Animating drag-and-drop sequences](/previous-versions/windows/apps/jj649427(v=win.10))
-* [Quickstart: Animating your UI using library animations](/previous-versions/windows/apps/hh452703(v=win.10))
-* [**DragItemThemeAnimation class**](/uwp/api/windows.ui.xaml.media.animation.dragitemthemeanimation)
-* [**DropTargetItemThemeAnimation class**](/uwp/api/windows.ui.xaml.media.animation.droptargetitemthemeanimation)
-* [**DragOverThemeAnimation class**](/uwp/api/windows.ui.xaml.media.animation.dragoverthemeanimation)
-
-
-
diff --git a/hub/apps/design/motion/motion-edgebased.md b/hub/apps/design/motion/motion-edgebased.md
deleted file mode 100644
index 530851c442..0000000000
--- a/hub/apps/design/motion/motion-edgebased.md
+++ /dev/null
@@ -1,52 +0,0 @@
----
-description: Edge-based animations show or hide UI that originates from the edge of the screen.
-title: Edge-based UI animations
-ms.assetid: 5A8F73B1-F4F6-424b-9EDF-A9766C5DEAE8
-label: Motion--edge-based UI
-template: detail.hbs
-ms.date: 09/24/2020
-ms.topic: article
-keywords: windows 10, uwp
-ms.localizationpriority: medium
----
-# Edge-based UI animations
-
-
-
-
-
-Edge-based animations show or hide UI that originates from the edge of the screen. The show and hide actions can be initiated either by the user or by the app. The UI can either overlay the app or be part of the main app surface. If the UI is part of the app surface, the rest of the app might need to be resized to accommodate it.
-
-> **Important APIs**: [**EdgeUIThemeTransition class**](/uwp/api/Windows.UI.Xaml.Media.Animation.EdgeUIThemeTransition)
-
-
-## Do's and don'ts
-
-
-- Use edge UI animations to show or hide a custom message or error bar that does not extend far into the screen.
-- Use panel animations to show UI that slides a significant distance into the screen, such as a task pane or a custom soft keyboard.
-- Slide the UI in from the same edge it will be attached to.
-- Slide the UI out to the same edge it came from.
-- If the contents of the app need to resize in response to the UI sliding in or out, use fade animations for the resize.
- - If the UI is sliding in, use a fade animation after the edge UI or panel animation.
- - If the UI is sliding out, use a fade animation at the same time as the edge UI or panel animation.
-- Don't apply these animations to notifications. Notifications should not be housed within edge-based UI.
-- Don't apply the edge UI or panel animations to any UI container or control that is not at the edge of the screen. These animations are used only for showing, resizing, and dismissing UI at the edges of the screen. To move other types of UI, use reposition animations.
-
- 
-
-## Related articles
-
-
-**For developers**
-* [Animations overview](./xaml-animation.md)
-* [Animating edge-based UI](/previous-versions/windows/apps/jj649428(v=win.10))
-* [Quickstart: Animating your UI using library animations](/previous-versions/windows/apps/hh452703(v=win.10))
-* [**EdgeUIThemeTransition class**](/uwp/api/Windows.UI.Xaml.Media.Animation.EdgeUIThemeTransition)
-* [**PaneThemeTransition class**](/uwp/api/Windows.UI.Xaml.Media.Animation.PaneThemeTransition)
-* [Animating fades](/previous-versions/windows/apps/jj649429(v=win.10))
-* [Animating repositions](/previous-versions/windows/apps/jj649434(v=win.10))
-
-
-
-
diff --git a/hub/apps/design/motion/motion-fade.md b/hub/apps/design/motion/motion-fade.md
deleted file mode 100644
index 613282f176..0000000000
--- a/hub/apps/design/motion/motion-fade.md
+++ /dev/null
@@ -1,39 +0,0 @@
----
-description: Use fade animations to bring items into a view or to take items out of a view. The two common fade animations are fade-in and fade-out.
-title: Fade animations
-ms.assetid: 975E5EE3-EFBE-4159-8D10-3C94143DD07F
-label: Motion--fades
-template: detail.hbs
-ms.date: 09/24/2020
-ms.topic: article
-keywords: windows 10, uwp
-ms.localizationpriority: medium
----
-# Fade animations
-
-
-
-Use fade animations to bring items into a view or to take items out of a view. The two common fade animations are fade-in and fade-out.
-
-> **Important APIs**: [**FadeInThemeAnimation class**](/uwp/api/Windows.UI.Xaml.Media.Animation.FadeInThemeAnimation), [**FadeOutThemeAnimation class**](/uwp/api/Windows.UI.Xaml.Media.Animation.FadeOutThemeAnimation)
-
-
-## Do's and don'ts
-
-
-- When your app transitions between unrelated or text-heavy elements, use a fade-out followed by a fade-in. This allows the outgoing object to completely disappear before the incoming object is visible.
-- Fade in the incoming element or elements on top of the outgoing elements if the size of the elements remains constant, and if you want the user to feel that they're looking at the same item. Once the fade-in is complete, the outgoing item can be removed. This is only a viable option when the outgoing item will be completely covered by the incoming item.
-- Avoid fade animations to add or delete items in a list. Instead, use the list animations created for that purpose.
-- Avoid fade animations to change the entire contents of a page. Instead, use the page transition animations created for that purpose.
-- Fade-out is a subtle way to remove an element.
-## Related articles
-
-* [Animations overview](./xaml-animation.md)
-* [Animating fades](/previous-versions/windows/apps/jj649429(v=win.10))
-* [Quickstart: Animating your UI using library animations](/previous-versions/windows/apps/hh452703(v=win.10))
-* [**FadeInThemeAnimation class**](/uwp/api/Windows.UI.Xaml.Media.Animation.FadeInThemeAnimation)
-* [**FadeOutThemeAnimation class**](/uwp/api/Windows.UI.Xaml.Media.Animation.FadeOutThemeAnimation)
-
-
-
-
diff --git a/hub/apps/design/motion/motion-in-practice.md b/hub/apps/design/motion/motion-in-practice.md
index f8a517c790..c0a5c0449d 100644
--- a/hub/apps/design/motion/motion-in-practice.md
+++ b/hub/apps/design/motion/motion-in-practice.md
@@ -1,14 +1,11 @@
---
-description: Learn how Fluent motion fundamentals like timing, easing, directionality, and gravity come together in your app.
title: Motion in practice - animation in Windows apps
+description: Learn how Fluent motion fundamentals like timing, easing, directionality, and gravity come together in your app.
label: Motion in practice
template: detail.hbs
-ms.date: 09/24/2020
-ms.topic: article
-keywords: windows 10, uwp
-pm-contact: stmoy
-design-contact: jeffarn
-doc-status: Draft
+ms.date: 10/29/2025
+ms.topic: how-to
+doc-status: Published
ms.localizationpriority: medium
ms.custom: RS5
---
@@ -18,22 +15,14 @@ Timing, easing, directionality, and gravity work together to form the foundation
Here are 3 ways to apply Fluent motion fundamentals in your app.
-:::row:::
- :::column:::
-**Implicit animation**
+- **Implicit animation**
Automatic tween and timing between values in a parameter change to achieve very simple Fluent motion using the standardized values.
- :::column-end:::
- :::column:::
-**Built-in animation**
+- **Built-in animation**
System components, such as common controls and shared motion, are "Fluent by default". Fundamentals have been applied in a manner consistent with their implied usage.
- :::column-end:::
- :::column:::
-**Custom animation following guidance recommendations**
+- **Custom animation following guidance recommendations**
There may be times when the system does not yet provide an exact motion solution for your scenario. In those cases, use the baseline fundamental recommendations as a starting point for your experiences.
- :::column-end:::
-:::row-end:::
-**Transition example**
+**_Transition example_**

@@ -52,7 +41,7 @@ Fade in: 300ms; Easing: Default Decelerate
:::column-end:::
:::row-end:::
-**Object example**
+**_Object example_**

@@ -67,49 +56,41 @@ Grow: 150ms; Easing: Default Accelerate
:::column-end:::
:::row-end:::
-## Examples
-
-
-
## Implicit Animations
-> Implicit animations require Windows 10, version 1809 ([SDK 17763](https://developer.microsoft.com/windows/downloads/windows-10-sdk)) or later.
-
Implicit animations are a simple way to achieve Fluent motion by automatically interpolating between the old and new values during a parameter change.
+> [!div class="checklist"]
+>
+> - **Important APIs:** [Windows.UI.Xaml.Media.Animation Namespace](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation), [Windows.UI.Xaml.Controls namespace](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls)
+
+> [!div class="nextstepaction"]
+> [Open the WinUI 3 Gallery app and see Implicit Transitions in action](winui3gallery://item/ImplicitTransition)
+
+[!INCLUDE [winui-3-gallery](../../../includes/winui-3-gallery.md)]
+
You can implicitly animate changes to the following properties:
-- [UIElement](/uwp/api/windows.ui.xaml.uielement)
+- [UIElement](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.uielement)
- **Opacity**
- **Rotation**
- **Scale**
- **Translation**
-- [Border](/uwp/api/windows.ui.xaml.controls.border), [ContentPresenter](/uwp/api/windows.ui.xaml.controls.contentpresenter), or [Panel](/uwp/api/windows.ui.xaml.controls.panel)
+- [Border](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.border), [ContentPresenter](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.contentpresenter), or [Panel](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.panel)
- **Background**
Each property that can have changes implicitly animated has a corresponding _transition_ property. To animate the property, you assign a transition type to the corresponding _transition_ property. This table shows the _transition_ properties and the transition type to use for each one.
| Animated property | Transition property | Implicit transition type |
| -- | -- | -- |
-| [UIElement.Opacity](/uwp/api/windows.ui.xaml.uielement.opacity) | [OpacityTransition](/uwp/api/windows.ui.xaml.uielement.opacitytransition) | [ScalarTransition](/uwp/api/windows.ui.xaml.scalartransition) |
-| [UIElement.Rotation](/uwp/api/windows.ui.xaml.uielement.rotation) | [RotationTransition](/uwp/api/windows.ui.xaml.uielement.rotationtransition) | [ScalarTransition](/uwp/api/windows.ui.xaml.scalartransition) |
-| [UIElement.Scale](/uwp/api/windows.ui.xaml.uielement.scale) | [ScaleTransition](/uwp/api/windows.ui.xaml.uielement.scaletransition) | [Vector3Transition](/uwp/api/windows.ui.xaml.vector3transition) |
-| [UIElement.Translation](/uwp/api/windows.ui.xaml.uielement.translation) | [TranslationTransition](/uwp/api/windows.ui.xaml.uielement.translationtransition) | [Vector3Transition](/uwp/api/windows.ui.xaml.vector3transition) |
-| [Border.Background](/uwp/api/windows.ui.xaml.controls.border.background) | [BackgroundTransition](/uwp/api/windows.ui.xaml.controls.border.backgroundtransition) | [BrushTransition](/uwp/api/windows.ui.xaml.brushtransition) |
-| [ContentPresenter.Background](/uwp/api/windows.ui.xaml.controls.contentpresenter.background) | [BackgroundTransition](/uwp/api/windows.ui.xaml.controls.contentpresenter.backgroundtransition) | [BrushTransition](/uwp/api/windows.ui.xaml.brushtransition) |
-| [Panel.Background](/uwp/api/windows.ui.xaml.controls.panel.background) | [BackgroundTransition](/uwp/api/windows.ui.xaml.controls.panel.backgroundtransition) | [BrushTransition](/uwp/api/windows.ui.xaml.brushtransition) |
+| [UIElement.Opacity](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.uielement.opacity) | [OpacityTransition](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.uielement.opacitytransition) | [ScalarTransition](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.scalartransition) |
+| [UIElement.Rotation](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.uielement.rotation) | [RotationTransition](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.uielement.rotationtransition) | [ScalarTransition](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.scalartransition) |
+| [UIElement.Scale](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.uielement.scale) | [ScaleTransition](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.uielement.scaletransition) | [Vector3Transition](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.vector3transition) |
+| [UIElement.Translation](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.uielement.translation) | [TranslationTransition](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.uielement.translationtransition) | [Vector3Transition](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.vector3transition) |
+| [Border.Background](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.border.background) | [BackgroundTransition](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.border.backgroundtransition) | [BrushTransition](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.brushtransition) |
+| [ContentPresenter.Background](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.contentpresenter.background) | [BackgroundTransition](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.contentpresenter.backgroundtransition) | [BrushTransition](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.brushtransition) |
+| [Panel.Background](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.panel.background) | [BackgroundTransition](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.panel.backgroundtransition) | [BrushTransition](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.brushtransition) |
This example shows how to use the Opacity property and transition to make a button fade in when the control is enabled and fade out when it's disabled.
@@ -130,6 +111,18 @@ public double OpaqueIfEnabled(bool IsEnabled)
}
```
+## UWP and WinUI 2
+
+[!INCLUDE [uwp-winui2-note](../../../includes/uwp-winui-2-note.md)]
+
+> [!div class="checklist"]
+>
+> - **UWP APIs:** [Windows.UI.Xaml.Media.Animation Namespace](/uwp/api/windows.ui.xaml.media.animation), [Windows.UI.Xaml.Controls namespace](/uwp/api/windows.ui.xaml.controls)
+> - **WinUI 2 Apis:** [Microsoft.UI.Xaml.Controls namespace](/windows/winui/api/microsoft.ui.xaml.controls)
+> - [Open the WinUI 2 Gallery app and see Implicit Transitions in action](winui2gallery://item/ImplicitTransition). [!INCLUDE [winui-2-gallery](../../../includes/winui-2-gallery.md)]
+
+Implicit animations require Windows 10, version 1809 ([SDK 17763](https://developer.microsoft.com/windows/downloads/windows-10-sdk)) or later.
+
## Related articles
- [Motion overview](index.md)
diff --git a/hub/apps/design/motion/motion-list.md b/hub/apps/design/motion/motion-list.md
deleted file mode 100644
index bda5a03429..0000000000
--- a/hub/apps/design/motion/motion-list.md
+++ /dev/null
@@ -1,42 +0,0 @@
----
-description: List animations let you insert or remove single or multiple items from a collection, such as a photo album or a list of search results.
-title: Add and delete animations
-ms.assetid: A85006AE-4992-457a-B514-500B8BEF5DC8
-label: Motion--add and delete animations
-template: detail.hbs
-ms.date: 09/24/2020
-ms.topic: article
-keywords: windows 10, uwp
-ms.localizationpriority: medium
----
-# Add and delete animations
-
-
-
-List animations let you insert or remove single or multiple items from a collection, such as a photo album or a list of search results.
-
-> **Important APIs**: [**AddDeleteThemeTransition class**](/uwp/api/windows.ui.xaml.media.animation.adddeletethemetransition)
-
-
-## Do's and don'ts
-
-
-- Use list animations to add a single new item to an existing set of items. For example, use them when a new email arrives or when a new photo is imported into an existing set.
-- Use list animations to add several items to a set at one time. For example, use them when you import a new set of photos to an existing collection. The addition or deletion of multiple items should happen at the same time, with no delay between the action on the individual objects.
-- Use add and delete list animations as a pair. Whenever you use one of these animations, use the corresponding animation for the opposite action.
-- Use list animations with a list of items to which you can add or delete one element or group of elements at once.
-- Don't use list animations to display or remove a container. These animations are for members of a collection or set that is already being displayed. Use pop-up animations to show or hide a transient container on top of the app surface. Use content transition animations to display or replace a container that is part of the app surface.
-- Don't use list animations on an entire set of items. Use the content transition animations to add or remove an entire collection within your container.
-
-
-
-## Related articles
-
-* [Animations overview](./xaml-animation.md)
-* [Animating list additions and deletions](/previous-versions/windows/apps/jj649430(v=win.10))
-* [Quickstart: Animating your UI using library animations](/previous-versions/windows/apps/hh452703(v=win.10))
-* [**AddDeleteThemeTransition class**](/uwp/api/windows.ui.xaml.media.animation.adddeletethemetransition)
-
-
-
-
diff --git a/hub/apps/design/motion/motion-pointer.md b/hub/apps/design/motion/motion-pointer.md
deleted file mode 100644
index 45fc5dec6b..0000000000
--- a/hub/apps/design/motion/motion-pointer.md
+++ /dev/null
@@ -1,34 +0,0 @@
----
-description: Use pointer animations to provide users with visual feedback when the user taps on an item.
-title: Pointer click animations
-ms.assetid: EEB10A2C-629A-4705-8468-4D019D74DDFF
-ms.date: 09/24/2020
-ms.topic: article
-keywords: windows 10, uwp
-ms.localizationpriority: medium
----
-# Pointer click animations
-
-
-
-Use pointer animations to provide users with visual feedback when the user taps on an item. The pointer down animation slightly shrinks and tilts the pressed item, and plays when an item is first tapped. The pointer up animation, which restores the item to its original position, is played when the user releases the pointer.
-
-
-> **Important APIs**: [**PointerUpThemeAnimation class**](/uwp/api/Windows.UI.Xaml.Media.Animation.PointerUpThemeAnimation), [**PointerDownThemeAnimation class**](/uwp/api/Windows.UI.Xaml.Media.Animation.PointerDownThemeAnimation)
-
-
-## Do's and don'ts
-
-- When you use a pointer up animation, immediately trigger the animation when the user releases the pointer. This provides instant feedback to the user that their action has been recognized, even if the action triggered by the tap (such as navigating to a new page) is slower to respond.
-
-## Related articles
-
-* [Animations overview](./xaml-animation.md)
-* [Animating pointer clicks](/previous-versions/windows/apps/jj649432(v=win.10))
-* [Quickstart: Animating your UI using library animations](/previous-versions/windows/apps/hh452703(v=win.10))
-* [**PointerUpThemeAnimation class**](/uwp/api/Windows.UI.Xaml.Media.Animation.PointerUpThemeAnimation)
-* [**PointerDownThemeAnimation class**](/uwp/api/Windows.UI.Xaml.Media.Animation.PointerDownThemeAnimation)
-
-
-
-
diff --git a/hub/apps/design/motion/motion-popup-animations.md b/hub/apps/design/motion/motion-popup-animations.md
deleted file mode 100644
index 078b4e67c7..0000000000
--- a/hub/apps/design/motion/motion-popup-animations.md
+++ /dev/null
@@ -1,39 +0,0 @@
----
-description: Use pop-up animations to show and hide pop-up UI for flyouts or custom pop-up UI elements. Pop-up elements are containers that appear over the app's content and are dismissed if the user taps or clicks outside of the pop-up element.
-title: Pop-up UI animations
-ms.assetid: 4E9025CE-FC90-4d4c-9DE6-EC6B6F2AD9DF
-label: Motion--Pop-up animations
-template: detail.hbs
-ms.date: 09/24/2020
-ms.topic: article
-keywords: windows 10, uwp
-ms.localizationpriority: medium
----
-# Pop-up UI animations
-
-
-
-Use pop-up animations to show and hide pop-up UI for flyouts or custom pop-up UI elements. Pop-up elements are containers that appear over the app's content and are dismissed if the user taps or clicks outside of the pop-up element.
-
-> **Important APIs**: [**PopInThemeAnimation class**](/uwp/api/Windows.UI.Xaml.Media.Animation.PopInThemeAnimation), [**PopupThemeTransition class**](/uwp/api/Windows.UI.Xaml.Media.Animation.PopupThemeTransition)
-
-
-## Do's and don'ts
-
-
-- Use pop-up animations to show or hide custom pop-up UI elements that aren't a part of the app page itself. The common controls provided by Windows already have these animations built in.
-- Don't use pop-up animations for tooltips or dialogs.
-- Don't use pop-up animations to show or hide UI within the main content of your app; only use pop-up animations to show or hide a pop-up container that displays on top of the main app content.
-
-## Related articles
-
-* [Animations overview](./xaml-animation.md)
-* [Animating pop-up UI](/previous-versions/windows/apps/jj649433(v=win.10))
-* [Quickstart: Animating your UI using library animations](/previous-versions/windows/apps/hh452703(v=win.10))
-* [**PopInThemeAnimation class**](/uwp/api/Windows.UI.Xaml.Media.Animation.PopInThemeAnimation)
-* [**PopOutThemeAnimation class**](/uwp/api/Windows.UI.Xaml.Media.Animation.PopOutThemeAnimation)
-* [**PopupThemeTransition class**](/uwp/api/Windows.UI.Xaml.Media.Animation.PopupThemeTransition)
-
-
-
-
diff --git a/hub/apps/design/motion/motion-reposition.md b/hub/apps/design/motion/motion-reposition.md
deleted file mode 100644
index ff01601b24..0000000000
--- a/hub/apps/design/motion/motion-reposition.md
+++ /dev/null
@@ -1,35 +0,0 @@
----
-description: Use the reposition animation to move an element or elements into a new position.
-title: Reposition animations
-ms.assetid: 25D1EE31-5C25-4F21-B34C-FBD8FB1C8FFF
-label: Motion--Reposition
-template: detail.hbs
-ms.date: 09/24/2020
-ms.topic: article
-keywords: windows 10, uwp
-ms.localizationpriority: medium
----
-# Reposition animations
-
-
-
-Use the reposition animation to move an element or elements into a new position.
-
-> **Important APIs**: [**RepositionThemeAnimation class**](/uwp/api/Windows.UI.Xaml.Media.Animation.RepositionThemeAnimation), [**RepositionThemeTransition class**](/uwp/api/Windows.UI.Xaml.Media.Animation.RepositionThemeTransition)
-
-## Do's and don'ts
-
-
-- If you're showing or hiding edge-based UI, use [edge-based UI animations](motion-edgebased.md). Edge-based UI is an element or container that is anchored at one edge of the screen.
-
-
-## Related articles
-
-* [Animations overview](./xaml-animation.md)
-* [Animating repositions](/previous-versions/windows/apps/jj649434(v=win.10))
-* [Quickstart: Animating your UI using library animations](/previous-versions/windows/apps/hh452703(v=win.10))
-* [**RepositionThemeAnimation class**](/uwp/api/Windows.UI.Xaml.Media.Animation.RepositionThemeAnimation)
-* [**RepositionThemeTransition class**](/uwp/api/Windows.UI.Xaml.Media.Animation.RepositionThemeTransition)
-
-
-
diff --git a/hub/apps/design/motion/page-transitions.md b/hub/apps/design/motion/page-transitions.md
index d22a37317d..b9aa516789 100644
--- a/hub/apps/design/motion/page-transitions.md
+++ b/hub/apps/design/motion/page-transitions.md
@@ -2,10 +2,8 @@
title: Page transitions
description: Learn how to use Universal Windows Platform (UWP) page transitions to give users feedback about the relationship between pages in your app.
template: detail.hbs
-ms.date: 09/24/2020
-ms.topic: article
-keywords: windows 10, uwp
-pm-contact: stmoy
+ms.date: 10/29/2025
+ms.topic: how-to
ms.localizationpriority: medium
ms.custom: RS5
---
@@ -13,23 +11,16 @@ ms.custom: RS5
Page transitions navigate users between pages in an app, providing feedback as the relationship between pages. Page transitions help users understand if they are at the top of a navigation hierarchy, moving between sibling pages, or navigating deeper into the page hierarchy.
-Two different animations are provided for navigation between pages in an app, *Page refresh* and *Drill*, and are represented by subclasses of [**NavigationTransitionInfo**](/uwp/api/windows.ui.xaml.media.animation.navigationtransitioninfo).
+Two different animations are provided for navigation between pages in an app, *Page refresh* and *Drill*, and are represented by subclasses of [**NavigationTransitionInfo**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.navigationtransitioninfo).
-## Examples
+> [!div class="checklist"]
+>
+> - **Important APIs**: [NavigationTransitionInfo class](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.navigationtransitioninfo), [EntranceNavigationTransitionInfo class](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.entrancenavigationtransitioninfo), [DrillInNavigationTransitionInfo class](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.drillinnavigationtransitioninfo), [SuppressNavigationTransitionInfo class](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.suppressnavigationtransitioninfo)
-
+> [!div class="nextstepaction"]
+> [Open the WinUI 3 Gallery app and see Implicit Transitions in action](winui3gallery://item/PageTransition)
+
+[!INCLUDE [winui-3-gallery](../../../includes/winui-3-gallery.md)]
## Page refresh
@@ -39,15 +30,16 @@ The desired feeling is that the user has started over.

-The page refresh animation is represented by the [**EntranceNavigationTransitionInfoClass**](/uwp/api/windows.ui.xaml.media.animation.entrancenavigationtransitioninfo).
+The page refresh animation is represented by the [**EntranceNavigationTransitionInfo**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.entrancenavigationtransitioninfo) class.
```csharp
-// Explicitly play the page refresh animation
+// Explicitly play the page refresh animation.
myFrame.Navigate(typeof(Page2), null, new EntranceNavigationTransitionInfo());
```
-**Note**: A [**Frame**](/uwp/api/windows.ui.xaml.controls.frame) automatically uses [**NavigationThemeTransition**](/uwp/api/windows.ui.xaml.media.animation.navigationthemetransition) to animate navigation between two pages. By default, the animation is page refresh.
+> [!NOTE]
+> A [**Frame**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.frame) automatically uses [**NavigationThemeTransition**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.navigationthemetransition) to animate navigation between two pages. By default, the animation is page refresh.
## Drill
@@ -57,10 +49,10 @@ The desired feeling is that the user has gone deeper into the app.

-The drill animation is represented by the [**DrillInNavigationTransitionInfo**](/uwp/api/windows.ui.xaml.media.animation.drillinnavigationtransitioninfo) class.
+The drill animation is represented by the [**DrillInNavigationTransitionInfo**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.drillinnavigationtransitioninfo) class.
```csharp
-// Play the drill in animation
+// Play the drill in animation.
myFrame.Navigate(typeof(Page2), null, new DrillInNavigationTransitionInfo());
```
@@ -71,19 +63,19 @@ Use horizontal slide to show that sibling pages appear next to each other. The [
The desired feeling is that the user is navigating between pages that are next to each other.
```csharp
-// Navigate to the right, ie. from LeftPage to RightPage
+// Navigate to the right, ie. from LeftPage to RightPage.
myFrame.Navigate(typeof(RightPage), null, new SlideNavigationTransitionInfo() { Effect = SlideNavigationTransitionEffect.FromRight } );
-// Navigate to the left, ie. from RightPage to LeftPage
+// Navigate to the left, ie. from RightPage to LeftPage.
myFrame.Navigate(typeof(LeftPage), null, new SlideNavigationTransitionInfo() { Effect = SlideNavigationTransitionEffect.FromLeft } );
```
## Suppress
-To avoid playing any animation during navigation, use [**SuppressNavigationTransitionInfo**](/uwp/api/windows.ui.xaml.media.animation.suppressnavigationtransitioninfo) in the place of other **NavigationTransitionInfo** subtypes.
+To avoid playing any animation during navigation, use [**SuppressNavigationTransitionInfo**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.suppressnavigationtransitioninfo) in the place of other **NavigationTransitionInfo** subtypes.
```csharp
-// Suppress the default animation
+// Suppress the default animation.
myFrame.Navigate(typeof(Page2), null, new SuppressNavigationTransitionInfo());
```
@@ -98,4 +90,4 @@ This can be useful when you modify navigation behavior dynamically based on scre
## Related topics
- [Navigate between two pages](../basics/navigate-between-two-pages.md)
-- [Motion in UWP apps](index.md)
+- [Motion in Windows](index.md)
diff --git a/hub/apps/design/motion/parallax.md b/hub/apps/design/motion/parallax.md
index 07df289941..8d6be660ea 100644
--- a/hub/apps/design/motion/parallax.md
+++ b/hub/apps/design/motion/parallax.md
@@ -1,41 +1,26 @@
---
title: Use parallax to add depth and movement to your app.
-description: Learn how to use the ParallaxView control in a UWP app to create a visual effect where items closer to the viewer move faster than items in the background.
-ms.assetid:
+description: Learn how to use the ParallaxView control to create a visual effect where items closer to the viewer move faster than items in the background.
+ms.assetid:
label: Parallax View
template: detail.hbs
-ms.date: 09/24/2020
+ms.date: 10/30/2025
ms.topic: article
-keywords: windows 10, uwp
-pm-contact: abarlow
-design-contact: conrwi
-dev-contact: stpete
doc-status: Published
ms.localizationpriority: medium
---
# Parallax
-Parallax is a visual effect where items closer to the viewer move faster than items in the background. Parallax creates a feeling of depth, perspective, and movement. In a UWP app, you can use the ParallaxView control to create a parallax effect.
+Parallax is a visual effect where items closer to the viewer move faster than items in the background. Parallax creates a feeling of depth, perspective, and movement. In a XAML app, you can use the ParallaxView control to create a parallax effect.
-> **Windows UI Library APIs:** [ParallaxView class](/uwp/api/Microsoft.UI.Xaml.Controls.Parallaxview), [VerticalShift property](/uwp/api/Microsoft.UI.Xaml.Controls.Parallaxview.VerticalShift), [HorizontalShift property](/uwp/api/Microsoft.UI.Xaml.Controls.Parallaxview.HorizontalShift)
+> [!div class="checklist"]
>
-> **Platform APIs**: [ParallaxView class](/uwp/api/Windows.UI.Xaml.Controls.Parallaxview), [VerticalShift property](/uwp/api/Windows.UI.Xaml.Controls.Parallaxview.VerticalShift), [HorizontalShift property](/uwp/api/Windows.UI.Xaml.Controls.Parallaxview.HorizontalShift)
-
-## Examples
-
-
+> - **Important APIs**: [ParallaxView class](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.parallaxview), [VerticalShift property](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.parallaxview.verticalshift), [HorizontalShift property](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.parallaxview.horizontalshift)
+
+> [!div class="nextstepaction"]
+> [Open the WinUI 3 Gallery app and see ParallaxView in action](winui3gallery://item/ParallaxView)
+
+[!INCLUDE [winui-3-gallery](../../../includes/winui-3-gallery.md)]
## Parallax and the Fluent Design System
@@ -43,80 +28,87 @@ Parallax is a visual effect where items closer to the viewer move faster than it
## How it works in a user interface
-In a UI, you can create a parallax effect by moving different objects at different rates when the UI scrolls or pans. To demonstrate, let's look at two layers of content, a list and a background image. The list is placed on top of the background image which already gives the illusion that the list might be closer to the viewer. Now, to achieve the parallax effect, we want the object closest to us to travel "faster" than the object that is farther away. As the user scrolls the interface, the list moves at a faster rate than the background image, which creates the illusion of depth.
+In a UI, you can create a parallax effect by moving different objects at different rates when the UI scrolls or pans. To demonstrate, let's look at two layers of content, a list and a background image. The list is placed on top of the background image which already gives the illusion that the list might be closer to the viewer. Now, to achieve the parallax effect, we want the object closest to us to travel "faster" than the object that is farther away. As the user scrolls the interface, the list moves at a faster rate than the background image, which creates the illusion of depth.

-
## Using the ParallaxView control to create a parallax effect
-To create a parallax effect, you use the [ParallaxView](/uwp/api/Windows.UI.Xaml.Controls.Parallaxview) control. This control ties the scroll position of a foreground element, such as a list, to a background element, such as an image. As you scroll through the foreground element, it animates the background element to create a parallax effect.
+To create a parallax effect, you use the [ParallaxView](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Controls.Parallaxview) control. This control ties the scroll position of a foreground element, such as a list, to a background element, such as an image. As you scroll through the foreground element, it animates the background element to create a parallax effect.
-To use the ParallaxView control, you provide a Source element, a background element, and set the [VerticalShift](/uwp/api/Windows.UI.Xaml.Controls.Parallaxview.VerticalShift) (for vertical scrolling) and/or [HorizontalShift](/uwp/api/Windows.UI.Xaml.Controls.Parallaxview.HorizontalShift) (for horizontal scrolling) properties to a value greater than zero.
-* The Source property takes a reference to the foreground element. For the parallax effect to occur, the foreground should be a [ScrollViewer](/uwp/api/Windows.UI.Xaml.Controls.ScrollViewer) or an element that contains a ScrollViewer, such as a [ListView](/uwp/api/windows.ui.xaml.controls.listview) or a [RichTextBox](/uwp/api/Windows.UI.Xaml.Controls.RichEditBox).
+To use the ParallaxView control, you provide a Source element, a background element, and set the [VerticalShift](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Controls.Parallaxview.VerticalShift) (for vertical scrolling) and/or [HorizontalShift](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Controls.Parallaxview.HorizontalShift) (for horizontal scrolling) properties to a value greater than zero.
-* To set the background element, you add that element as a child of the ParallaxView control. The background element can be any [UIElement](/uwp/api/windows.ui.xaml.uielement), such as an [Image](/uwp/api/Windows.UI.Xaml.Controls.Image) or a panel that contains additional UI elements.
+- The Source property takes a reference to the foreground element. For the parallax effect to occur, the foreground should be a [ScrollViewer](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Controls.ScrollViewer) or an element that contains a ScrollViewer, such as a [ListView](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.listview) or a [RichTextBox](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Controls.RichEditBox).
+- To set the background element, you add that element as a child of the ParallaxView control. The background element can be any [UIElement](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.uielement), such as an [Image](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Controls.Image) or a panel that contains additional UI elements.
-To create a parallax effect, the ParallaxView must be behind the foreground element. The [Grid](/uwp/api/windows.ui.xaml.controls.grid) and [Canvas](/uwp/api/windows.ui.xaml.controls.canvas) panels let you layer items on top of each other, so they work well with the ParallaxView control.
+To create a parallax effect, the ParallaxView must be behind the foreground element. The [Grid](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.grid) and [Canvas](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.canvas) panels let you layer items on top of each other, so they work well with the ParallaxView control.
This example creates a parallax effect for a list:
-
+
```xaml
-
-
-
+
+
+
-
+
- Item 1
- Item 2
- Item 3
- Item 4
- Item 5
- Item 6
- Item 7
- Item 8
- Item 9
- Item 10
- Item 11
- Item 13
- Item 14
- Item 15
- Item 16
- Item 17
- Item 18
- Item 19
- Item 20
- Item 21
+ Item 1
+ Item 2
+ Item 3
+ Item 4
+ Item 5
+ Item 6
+ Item 7
+ Item 8
+ Item 9
+ Item 10
+ Item 11
+ Item 13
+ Item 14
+ Item 15
+ Item 16
+ Item 17
+ Item 18
+ Item 19
+ Item 20
+ Item 21
-```
+```
The ParallaxView automatically adjusts the size of the image so it works for the parallax operation so you don't have to worry about the image scrolling out of view.
-## Customizing the parallax effect
+## Customizing the parallax effect
The VerticalShift and HorizontalShift properties let you control degree of the parallax effect.
* The VerticalShift property specifies how far we want the background to vertically shift during the entire parallax operation. A value of 0 means the background doesn't move at all.
* The HorizontalShift property specifies how far we want the background to horizontally shift during the entire parallax operation. A value of 0 means the background doesn't move at all.
-Larger values create a more dramatic effect.
+Larger values create a more dramatic effect.
-For the complete list of ways to customize parallax, see the ParallaxView class.
+For the complete list of ways to customize parallax, see the ParallaxView class.
-## Do's and don'ts
+## Recommendations
- Use parallax in lists with a background image
- Consider using parallax in ListViewItems when ListViewItems contain an image
- Don't use it everywhere, overuse can diminish its impact
+## UWP and WinUI 2
+
+[!INCLUDE [uwp-winui2-note](../../../includes/uwp-winui-2-note.md)]
+
+> [!div class="checklist"]
+>
+> - **WinUI APIs:** [ParallaxView class](/uwp/api/Microsoft.UI.Xaml.Controls.Parallaxview), [VerticalShift property](/uwp/api/Microsoft.UI.Xaml.Controls.Parallaxview.VerticalShift), [HorizontalShift property](/uwp/api/Microsoft.UI.Xaml.Controls.Parallaxview.HorizontalShift)
+> - **Platform APIs**: [ParallaxView class](/uwp/api/windows.ui.xaml.Controls.Parallaxview), [VerticalShift property](/uwp/api/windows.ui.xaml.Controls.Parallaxview.VerticalShift), [HorizontalShift property](/uwp/api/windows.ui.xaml.Controls.Parallaxview.HorizontalShift)
+> - [Open the WinUI 2 Gallery app and see ParallaxView in action](winui2gallery://item/ParallaxView). [!INCLUDE [winui-2-gallery](../../../includes/winui-2-gallery.md)]
+
## Related articles
-- [ParallaxView class](/uwp/api/Windows.UI.Xaml.Controls.Parallaxview)
-- [Fluent Design for UWP](../index.md)
-- [Science in the System: Fluent Design and Depth](https://medium.com/microsoft-design/science-in-the-system-fluent-design-and-depth-fb6d0f23a53f)
\ No newline at end of file
+- [ParallaxView class](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Controls.Parallaxview)
diff --git a/hub/apps/design/motion/storyboarded-animations.md b/hub/apps/design/motion/storyboarded-animations.md
index 4f186c3fc2..307ec4d9e9 100644
--- a/hub/apps/design/motion/storyboarded-animations.md
+++ b/hub/apps/design/motion/storyboarded-animations.md
@@ -2,39 +2,27 @@
ms.assetid: 0CBCEEA0-2B0E-44A1-A09A-F7A939632F3A
title: Storyboarded animations
description: Learn how to use storyboarded animations to change the value of a dependency property as a function of time.
-ms.date: 07/13/2018
+ms.date: 10/31/2025
ms.topic: article
-keywords: windows 10, uwp
ms.localizationpriority: medium
---
# Storyboarded animations
Storyboarded animations are not just animations in the visual sense. A storyboarded animation is a way to change the value of a dependency property as a function of time. One of the main reasons you might need a storyboarded animation that's not from the animation library is to define the visual state for a control, as part of a control template or page definition.
-## Differences with Silverlight and WPF
-
-If you are familiar with Microsoft Silverlight or Windows Presentation Foundation (WPF), read this section; otherwise, you can skip it.
-
-In general, creating storyboarded animations in a Windows Runtime app is like Silverlight or WPF. But there are a number of important differences:
-
-- Storyboarded animations are not the only way to visually animate a UI, nor are they necessarily the easiest way for app developers to do so. Rather than using storyboarded animations it's often a better design practice to use theme animations and transition animations. These can quickly create recommended UI animations without getting into the intricacies of animation property targeting. For more info see [Animations overview](xaml-animation.md).
-- In the Windows Runtime, many XAML controls include theme animations and transition animations as part of their built-in behavior. For the most part, WPF and Silverlight controls didn't have a default animation behavior.
-- Not all custom animations you create can run by default in a Windows Runtime app, if the animation system determines that the animation might cause bad performance in your UI. Animations where the system determines there could be a performance impact are called *dependent animations*. It's dependent because the clocking of your animation is directly working against the UI thread, which is also where active user input and other updates are trying to apply the runtime changes to UI. A dependent animation that's consuming extensive system resources on the UI thread can make the app appear unresponsive in certain situations. If your animation causes a layout change or otherwise has the potential to impact performance on the UI thread, you often need to explicitly enable the animation to see it run. That's what the **EnableDependentAnimation** property on specific animation classes is for. See [Dependent and independent animations](./storyboarded-animations.md#dependent-and-independent-animations) for more info.
-- Custom easing functions are not currently supported in the Windows Runtime.
-
## Defining storyboarded animations
-A storyboarded animation is a way to change the value of a dependency property as a function of time. The property you are animating is not always a property that directly affects the UI of your app. But since XAML is about defining UI for an app, usually it is a UI-related property you are animating. For example, you can animate the angle of a [**RotateTransform**](/uwp/api/Windows.UI.Xaml.Media.RotateTransform), or the color value of a button's background.
+A storyboarded animation is a way to change the value of a dependency property as a function of time. The property you are animating is not always a property that directly affects the UI of your app. But since XAML is about defining UI for an app, usually it is a UI-related property you are animating. For example, you can animate the angle of a [**RotateTransform**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.RotateTransform), or the color value of a button's background.
One of the main reasons you might be defining a storyboarded animation is if you are a control author or are re-templating a control, and you are defining visual states. For more info, see [Storyboarded animations for visual states](/previous-versions/windows/apps/jj819808(v=win.10)).
Whether you are defining visual states or a custom animation for an app, the concepts and APIs for storyboarded animations that are described in this topic mostly apply to either.
-In order to be animated, the property you are targeting with a storyboarded animation must be a *dependency property*. A dependency property is a key feature of the Windows Runtime XAML implementation. The writeable properties of most common UI elements are typically implemented as dependency properties, so that you can animate them, apply data-bound values, or apply a [**Style**](/uwp/api/Windows.UI.Xaml.Style) and target the property with a [**Setter**](/uwp/api/Windows.UI.Xaml.Setter). For more info about how dependency properties work, see [Dependency properties overview](/windows/uwp/xaml-platform/dependency-properties-overview).
+In order to be animated, the property you are targeting with a storyboarded animation must be a *dependency property*. A dependency property is a key feature of the Windows Runtime XAML implementation. The writeable properties of most common UI elements are typically implemented as dependency properties, so that you can animate them, apply data-bound values, or apply a [**Style**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Style) and target the property with a [**Setter**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Setter). For more info about how dependency properties work, see [Dependency properties overview](/windows/apps/develop/platform/xaml/dependency-properties-overview).
Most of the time, you define a storyboarded animation by writing XAML. If you use a tool such as Microsoft Visual Studio, it will produce the XAML for you. It's possible to define a storyboarded animation using code too, but that's less common.
-Let's look at a simple example. In this XAML example, the [**Opacity**](/uwp/api/Windows.UI.Xaml.UIElement.Opacity) property is animated on a particular [**Rectangle**](/uwp/api/Windows.UI.Xaml.Shapes.Rectangle) object.
+Let's look at a simple example. In this XAML example, the [**Opacity**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.UIElement.Opacity) property is animated on a particular [**Rectangle**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Shapes.Rectangle) object.
```xaml
@@ -58,17 +46,17 @@ Let's look at a simple example. In this XAML example, the [**Opacity**](/uwp/api
### Identifying the object to animate
-In the previous example, the storyboard was animating the [**Opacity**](/uwp/api/Windows.UI.Xaml.UIElement.Opacity) property of a [**Rectangle**](/uwp/api/Windows.UI.Xaml.Shapes.Rectangle). You don't declare the animations on the object itself. Instead, you do this within the animation definition of a storyboard. Storyboards are usually defined in XAML that's not in the immediate vicinity of the XAML UI definition of the object to animate. Instead, they're usually set up as a XAML resource.
+In the previous example, the storyboard was animating the [**Opacity**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.UIElement.Opacity) property of a [**Rectangle**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Shapes.Rectangle). You don't declare the animations on the object itself. Instead, you do this within the animation definition of a storyboard. Storyboards are usually defined in XAML that's not in the immediate vicinity of the XAML UI definition of the object to animate. Instead, they're usually set up as a XAML resource.
-To connect an animation to a target, you reference the target by its identifying programming name. You should always apply the [x:Name attribute](/windows/uwp/xaml-platform/x-name-attribute) in the XAML UI definition to name the object that you want to animate. You then target the object to animate by setting [**Storyboard.TargetName**](/dotnet/api/system.windows.media.animation.storyboard.targetname) within the animation definition. For the value of **Storyboard.TargetName**, you use the name string of the target object, which is what you set earlier and elsewhere with x:Name attribute.
+To connect an animation to a target, you reference the target by its identifying programming name. You should always apply the [x:Name attribute](/windows/apps/develop/platform/xaml/x-name-attribute) in the XAML UI definition to name the object that you want to animate. You then target the object to animate by setting [**Storyboard.TargetName**](/dotnet/api/system.windows.media.animation.storyboard.targetname) within the animation definition. For the value of **Storyboard.TargetName**, you use the name string of the target object, which is what you set earlier and elsewhere with x:Name attribute.
### Targeting the dependency property to animate
-You set a value for [**Storyboard.TargetProperty**](/previous-versions/windows/silverlight/dotnet-windows-silverlight/ms616983(v=vs.95)) in the animation. This determines which specific property of the targeted object is animated.
+You set a value for [**Storyboard.TargetProperty**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.storyboard.targetproperty) in the animation. This determines which specific property of the targeted object is animated.
Sometimes you need to target a property that's not an immediate property of the target object, but that is nested more deeply in an object-property relationship. You often need to do this in order to drill down into a set of contributing object and property values until you can reference a property type that can be animated ([**Double**](/dotnet/api/system.double), [**Point**](/uwp/api/Windows.Foundation.Point), [**Color**](/uwp/api/Windows.UI.Color)). This concept is called *indirect targeting*, and the syntax for targeting a property in this way is known as a *property path*.
-Here's an example. One common scenario for a storyboarded animation is to change the color of a part of an app UI or control in order to represent that the control is in a particular state. Say you want to animate the [**Foreground**](/uwp/api/windows.ui.xaml.controls.textblock.foreground) of a [**TextBlock**](/uwp/api/Windows.UI.Xaml.Controls.TextBlock), so that it turns from red to green. You'd expect that a [**ColorAnimation**](/uwp/api/Windows.UI.Xaml.Media.Animation.ColorAnimation) is involved, and that's correct. However, none of the properties on UI elements that affect the object's color are actually of type [**Color**](/uwp/api/Windows.UI.Color). Instead, they're of type [**Brush**](/uwp/api/Windows.UI.Xaml.Media.Brush). So what you actually need to target for animation is the [**Color**](/uwp/api/Windows.UI.Xaml.Media.SolidColorBrush.Color) property of the [**SolidColorBrush**](/uwp/api/Windows.UI.Xaml.Media.SolidColorBrush) class, which is a **Brush**-derived type that's typically used for these color-related UI properties. And here's what that looks like in terms of forming a property path for your animation's property targeting:
+Here's an example. One common scenario for a storyboarded animation is to change the color of a part of an app UI or control in order to represent that the control is in a particular state. Say you want to animate the [**Foreground**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.textblock.foreground) of a [**TextBlock**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Controls.TextBlock), so that it turns from red to green. You'd expect that a [**ColorAnimation**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.ColorAnimation) is involved, and that's correct. However, none of the properties on UI elements that affect the object's color are actually of type [**Color**](/uwp/api/Windows.UI.Color). Instead, they're of type [**Brush**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Brush). So what you actually need to target for animation is the [**Color**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.SolidColorBrush.Color) property of the [**SolidColorBrush**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.SolidColorBrush) class, which is a **Brush**-derived type that's typically used for these color-related UI properties. And here's what that looks like in terms of forming a property path for your animation's property targeting:
```xaml
@@ -87,23 +75,23 @@ Here's how to think of this syntax in terms of its parts:
Here's a list of animation targeting scenarios where you'll probably be using indirect property targeting, and some property path strings that approximates the syntax you'll use:
-- Animating the [**X**](/uwp/api/windows.ui.xaml.media.translatetransform.x) value of a [**TranslateTransform**](/uwp/api/Windows.UI.Xaml.Media.TranslateTransform), as applied to a [**RenderTransform**](/uwp/api/windows.ui.xaml.uielement.rendertransform): `(UIElement.RenderTransform).(TranslateTransform.X)`
-- Animating a [**Color**](/uwp/api/Windows.UI.Xaml.Media.SolidColorBrush.Color) within a [**GradientStop**](/uwp/api/Windows.UI.Xaml.Media.GradientStop) of a [**LinearGradientBrush**](/uwp/api/Windows.UI.Xaml.Media.LinearGradientBrush), as applied to a [**Fill**](/uwp/api/Windows.UI.Xaml.Shapes.Shape.Fill): `(Shape.Fill).(GradientBrush.GradientStops)[0].(GradientStop.Color)`
-- Animating the [**X**](/uwp/api/windows.ui.xaml.media.translatetransform.x) value of a [**TranslateTransform**](/uwp/api/Windows.UI.Xaml.Media.TranslateTransform), which is 1 of 4 transforms in a [**TransformGroup**](/uwp/api/Windows.UI.Xaml.Media.TransformGroup), as applied to a [**RenderTransform**](/uwp/api/windows.ui.xaml.uielement.rendertransform):`(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)`
+- Animating the [**X**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.translatetransform.x) value of a [**TranslateTransform**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.TranslateTransform), as applied to a [**RenderTransform**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.uielement.rendertransform): `(UIElement.RenderTransform).(TranslateTransform.X)`
+- Animating a [**Color**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.SolidColorBrush.Color) within a [**GradientStop**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.GradientStop) of a [**LinearGradientBrush**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.LinearGradientBrush), as applied to a [**Fill**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Shapes.Shape.Fill): `(Shape.Fill).(GradientBrush.GradientStops)[0].(GradientStop.Color)`
+- Animating the [**X**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.translatetransform.x) value of a [**TranslateTransform**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.TranslateTransform), which is 1 of 4 transforms in a [**TransformGroup**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.TransformGroup), as applied to a [**RenderTransform**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.uielement.rendertransform):`(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)`
You'll notice some of these examples use square brackets around numbers. This is an indexer. It indicates that the property name preceding it has a collection as value, and that you want an item (as identified by a zero-based index) from within that collection.
You can also animate XAML attached properties. Always enclose the full attached property name in parentheses, for example `(Canvas.Left)`. For more info, see [Animating XAML attached properties](./storyboarded-animations.md#animating-xaml-attached-properties).
-For more info on how to use a property path for indirect targeting of the property to animate, see [Property-path syntax](/windows/uwp/xaml-platform/property-path-syntax) or [**Storyboard.TargetProperty attached property**](/previous-versions/windows/silverlight/dotnet-windows-silverlight/ms616983(v=vs.95)).
+For more info on how to use a property path for indirect targeting of the property to animate, see [Property-path syntax](/windows/apps/develop/platform/xaml/property-path-syntax).
### Animation types
The Windows Runtime animation system has three specific types that storyboarded animations can apply to:
-- [**Double**](/dotnet/api/system.double), can be animated with any [**DoubleAnimation**](/uwp/api/Windows.UI.Xaml.Media.Animation.DoubleAnimation)
-- [**Point**](/uwp/api/Windows.Foundation.Point), can be animated with any [**PointAnimation**](/uwp/api/Windows.UI.Xaml.Media.Animation.PointAnimation)
-- [**Color**](/uwp/api/Windows.UI.Color), can be animated with any [**ColorAnimation**](/uwp/api/Windows.UI.Xaml.Media.Animation.ColorAnimation)
+- [**Double**](/dotnet/api/system.double), can be animated with any [**DoubleAnimation**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.DoubleAnimation)
+- [**Point**](/uwp/api/Windows.Foundation.Point), can be animated with any [**PointAnimation**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.PointAnimation)
+- [**Color**](/uwp/api/Windows.UI.Color), can be animated with any [**ColorAnimation**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.ColorAnimation)
There's also a generalized [**Object**](/dotnet/api/system.object) animation type for object reference values, which we'll discuss later.
@@ -113,15 +101,15 @@ So far we've shown you how to target the object and the property to animate, but
The animation types we've described are sometimes referred to as **From**/**To**/**By** animations. This means that the animation is changing the value of a property, over time, using one or more of these inputs that come from the animation definition:
-- The value starts at the **From** value. If you don't specify a **From** value, the starting value is whatever value the animated property has at the time before the animation runs. This might be a default value, a value from a style or template, or a value specifically applied by a XAML UI definition or app code.
-- At the end of the animation, the value is the **To** value.
-- Or, to specify an ending value relative to the starting value, set the **By** property. You'd set this instead of the **To** property.
-- If you don't specify a **To** value or a **By** value, the ending value is whatever value the animated property has at the time before the animation runs. In this case you'd better have a **From** value because otherwise the animation won't change the value at all; its starting and ending values are both the same.
-- An animation typically has at least one of **From**, **By** or **To** but never all three.
+- The value starts at the **From** value. If you don't specify a **From** value, the starting value is whatever value the animated property has at the time before the animation runs. This might be a default value, a value from a style or template, or a value specifically applied by a XAML UI definition or app code.
+- At the end of the animation, the value is the **To** value.
+- Or, to specify an ending value relative to the starting value, set the **By** property. You'd set this instead of the **To** property.
+- If you don't specify a **To** value or a **By** value, the ending value is whatever value the animated property has at the time before the animation runs. In this case you'd better have a **From** value because otherwise the animation won't change the value at all; its starting and ending values are both the same.
+- An animation typically has at least one of **From**, **By** or **To** but never all three.
-Let's revisit the earlier XAML example and look again at the **From** and **To** values, and the **Duration**. The example is animating the [**Opacity**](/uwp/api/Windows.UI.Xaml.UIElement.Opacity) property, and the property type of **Opacity** is [**Double**](/dotnet/api/system.double). So the animation to use here is [**DoubleAnimation**](/uwp/api/Windows.UI.Xaml.Media.Animation.DoubleAnimation).
+Let's revisit the earlier XAML example and look again at the **From** and **To** values, and the **Duration**. The example is animating the [**Opacity**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.UIElement.Opacity) property, and the property type of **Opacity** is [**Double**](/dotnet/api/system.double). So the animation to use here is [**DoubleAnimation**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.DoubleAnimation).
-`From="1.0" To="0.0"` specifies that when the animation runs, the [**Opacity**](/uwp/api/Windows.UI.Xaml.UIElement.Opacity) property starts at a value of 1 and animates to 0. In other words, in terms of what these [**Double**](/dotnet/api/system.double) values mean to the **Opacity** property, this animation will cause the object to start opaque and then fade to transparent.
+`From="1.0" To="0.0"` specifies that when the animation runs, the [**Opacity**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.UIElement.Opacity) property starts at a value of 1 and animates to 0. In other words, in terms of what these [**Double**](/dotnet/api/system.double) values mean to the **Opacity** property, this animation will cause the object to start opaque and then fade to transparent.
```xaml
...
@@ -134,16 +122,16 @@ Let's revisit the earlier XAML example and look again at the **From** and **To**
...
```
-`Duration="0:0:1"` specifies how long the animation lasts, that is, how fast the rectangle fades. A [**Duration**](/uwp/api/windows.ui.xaml.media.animation.timeline.duration) property is specified in the form of *hours*:*minutes*:*seconds*. The time duration in this example is one second.
+`Duration="0:0:1"` specifies how long the animation lasts, that is, how fast the rectangle fades. A [**Duration**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.timeline.duration) property is specified in the form of *hours*:*minutes*:*seconds*. The time duration in this example is one second.
-For more info about [**Duration**](/uwp/api/Windows.UI.Xaml.Duration) values and the XAML syntax, see [**Duration**](/uwp/api/Windows.UI.Xaml.Duration).
+For more info about [**Duration**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Duration) values and the XAML syntax, see [**Duration**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Duration).
> [!NOTE]
-> For the example we showed, if you were sure that the starting state of the object being animated has [**Opacity**](/uwp/api/Windows.UI.Xaml.UIElement.Opacity) always equal to 1, either through the default or an explicit set, you could omit the **From** value, the animation would use the implicit starting value, and the result would be the same.
+> For the example we showed, if you were sure that the starting state of the object being animated has [**Opacity**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.UIElement.Opacity) always equal to 1, either through the default or an explicit set, you could omit the **From** value, the animation would use the implicit starting value, and the result would be the same.
### From/To/By are nullable
-We mentioned previously that you can omit **From**, **To** or **By** and thus use current non-animated values as substitutes for a missing value. **From**, **To**, or **By** properties of an animation aren't of the type you might guess. For example the type of the [**DoubleAnimation.To**](/uwp/api/windows.ui.xaml.media.animation.doubleanimation.easingfunction) property isn't [**Double**](/dotnet/api/system.double). Instead, it's a [**Nullable**](/dotnet/api/system.nullable-1) for **Double**. And its default value is **null**, not 0. That **null** value is how the animation system distinguishes that you haven't specifically set a value for a **From**, **To**, or **By** property. Visual C++ component extensions (C++/CX) doesn't have a **Nullable** type, so it uses [**IReference**](/uwp/api/Windows.Foundation.IReference_T_) instead.
+We mentioned previously that you can omit **From**, **To** or **By** and thus use current non-animated values as substitutes for a missing value. **From**, **To**, or **By** properties of an animation aren't of the type you might guess. For example the type of the [**DoubleAnimation.To**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.doubleanimation.easingfunction) property isn't [**Double**](/dotnet/api/system.double). Instead, it's a [**Nullable**](/dotnet/api/system.nullable-1) for **Double**. And its default value is **null**, not 0. That **null** value is how the animation system distinguishes that you haven't specifically set a value for a **From**, **To**, or **By** property.
### Other properties of an animation
@@ -151,49 +139,49 @@ The next properties described in this section are all optional in that they have
### **AutoReverse**
-If you don't specify either [**AutoReverse**](/uwp/api/windows.ui.xaml.media.animation.timeline.autoreverse) or [**RepeatBehavior**](/uwp/api/windows.ui.xaml.media.animation.timeline.repeatbehavior) on an animation, that animation will run once, and run for the time specified as the [**Duration**](/uwp/api/windows.ui.xaml.media.animation.timeline.duration).
+If you don't specify either [**AutoReverse**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.timeline.autoreverse) or [**RepeatBehavior**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.timeline.repeatbehavior) on an animation, that animation will run once, and run for the time specified as the [**Duration**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.timeline.duration).
-The [**AutoReverse**](/uwp/api/windows.ui.xaml.media.animation.timeline.autoreverse) property specifies whether a timeline plays in reverse after it reaches the end of its [**Duration**](/uwp/api/windows.ui.xaml.media.animation.timeline.duration). If you set it to **true**, the animation reverses after it reaches the end of its declared [**Duration**](/uwp/api/windows.ui.xaml.media.animation.timeline.duration), changing the value from its ending value (**To**) back to its starting value (**From**). This means that the animation effectively runs for double the time of its [**Duration**](/uwp/api/windows.ui.xaml.media.animation.timeline.duration).
+The [**AutoReverse**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.timeline.autoreverse) property specifies whether a timeline plays in reverse after it reaches the end of its [**Duration**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.timeline.duration). If you set it to **true**, the animation reverses after it reaches the end of its declared [**Duration**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.timeline.duration), changing the value from its ending value (**To**) back to its starting value (**From**). This means that the animation effectively runs for double the time of its [**Duration**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.timeline.duration).
### **RepeatBehavior**
-The [**RepeatBehavior**](/uwp/api/windows.ui.xaml.media.animation.timeline.repeatbehavior) property specifies either how many times a timeline plays, or a larger duration that the timeline should repeat within. By default, a timeline has an iteration count of "1x", which means it plays one time for its [**Duration**](/uwp/api/windows.ui.xaml.media.animation.timeline.duration) and does not repeat.
+The [**RepeatBehavior**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.timeline.repeatbehavior) property specifies either how many times a timeline plays, or a larger duration that the timeline should repeat within. By default, a timeline has an iteration count of "1x", which means it plays one time for its [**Duration**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.timeline.duration) and does not repeat.
-You can cause the animation to run multiple iterations. For example, a value of "3x" causes the animation to run three times. Or, you can specify a different [**Duration**](/uwp/api/Windows.UI.Xaml.Duration) for [**RepeatBehavior**](/uwp/api/windows.ui.xaml.media.animation.timeline.repeatbehavior). That **Duration** should be longer than the **Duration** of the animation itself to be effective. For example, if you specify a **RepeatBehavior** of "0:0:10", for an animation that has a [**Duration**](/uwp/api/windows.ui.xaml.media.animation.timeline.duration) of "0:0:2", that animation repeats five times. If these don't divide evenly, the animation gets truncated at the time that the **RepeatBehavior** time is reached, which might be partway through. Finally, you can specify the special value "Forever", which causes the animation to run infinitely until it's deliberately stopped.
+You can cause the animation to run multiple iterations. For example, a value of "3x" causes the animation to run three times. Or, you can specify a different [**Duration**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Duration) for [**RepeatBehavior**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.timeline.repeatbehavior). That **Duration** should be longer than the **Duration** of the animation itself to be effective. For example, if you specify a **RepeatBehavior** of "0:0:10", for an animation that has a [**Duration**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.timeline.duration) of "0:0:2", that animation repeats five times. If these don't divide evenly, the animation gets truncated at the time that the **RepeatBehavior** time is reached, which might be partway through. Finally, you can specify the special value "Forever", which causes the animation to run infinitely until it's deliberately stopped.
-For more info about [**RepeatBehavior**](/uwp/api/Windows.UI.Xaml.Media.Animation.RepeatBehavior) values and the XAML syntax, see [**RepeatBehavior**](/uwp/api/Windows.UI.Xaml.Media.Animation.RepeatBehavior).
+For more info about [**RepeatBehavior**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.RepeatBehavior) values and the XAML syntax, see [**RepeatBehavior**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.RepeatBehavior).
### **FillBehavior="Stop"**
-By default, when an animation ends, the animation leaves the property value as the final **To** or **By**-modified value even after its duration is surpassed. However, if you set the value of the [**FillBehavior**](/uwp/api/windows.ui.xaml.media.animation.timeline.fillbehavior) property to [**FillBehavior.Stop**](/uwp/api/Windows.UI.Xaml.Media.Animation.FillBehavior), the value of the animated value reverts to whatever the value was before the animation was applied, or more precisely to the current effective value as determined by the dependency property system (for more info on this distinction, see [Dependency properties overview](/windows/uwp/xaml-platform/dependency-properties-overview)).
+By default, when an animation ends, the animation leaves the property value as the final **To** or **By**-modified value even after its duration is surpassed. However, if you set the value of the [**FillBehavior**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.timeline.fillbehavior) property to [**FillBehavior.Stop**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.FillBehavior), the value of the animated value reverts to whatever the value was before the animation was applied, or more precisely to the current effective value as determined by the dependency property system (for more info on this distinction, see [Dependency properties overview](/windows/apps/develop/platform/xaml/dependency-properties-overview)).
### **BeginTime**
-By default, the [**BeginTime**](/uwp/api/windows.ui.xaml.media.animation.timeline.begintime) of an animation is "0:0:0", so it begins as soon as its containing [**Storyboard**](/uwp/api/Windows.UI.Xaml.Media.Animation.Storyboard) runs. You might change this if the **Storyboard** contains more than one animation and you want to stagger the start times of the others versus an initial animation, or to create a deliberate short delay.
+By default, the [**BeginTime**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.timeline.begintime) of an animation is "0:0:0", so it begins as soon as its containing [**Storyboard**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.Storyboard) runs. You might change this if the **Storyboard** contains more than one animation and you want to stagger the start times of the others versus an initial animation, or to create a deliberate short delay.
### **SpeedRatio**
-If you have more than one animation in a [**Storyboard**](/uwp/api/Windows.UI.Xaml.Media.Animation.Storyboard) you can change the time rate of one or more of the animations relative to the **Storyboard**. It's the parent **Storyboard** that ultimately controls how the [**Duration**](/uwp/api/Windows.UI.Xaml.Duration) time elapses while the animations run. This property isn't used very often. For more info see [**SpeedRatio**](/uwp/api/windows.ui.xaml.media.animation.timeline.speedratio).
+If you have more than one animation in a [**Storyboard**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.Storyboard) you can change the time rate of one or more of the animations relative to the **Storyboard**. It's the parent **Storyboard** that ultimately controls how the [**Duration**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Duration) time elapses while the animations run. This property isn't used very often. For more info see [**SpeedRatio**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.timeline.speedratio).
## Defining more than one animation in a **Storyboard**
-The contents of a [**Storyboard**](/uwp/api/Windows.UI.Xaml.Media.Animation.Storyboard) can be more than one animation definition. You might have more than one animation if you are applying related animations to two properties of the same target object. For example, you might change both the [**TranslateX**](/uwp/api/windows.ui.xaml.media.compositetransform.translatex) and [**TranslateY**](/uwp/api/windows.ui.xaml.media.compositetransform.translatey) properties of a [**TranslateTransform**](/uwp/api/Windows.UI.Xaml.Media.TranslateTransform) used as the [**RenderTransform**](/uwp/api/windows.ui.xaml.uielement.rendertransform) of a UI element; this will cause the element to translate diagonally. You need two different animations to accomplish that, but you might want the animations to be part of the same **Storyboard** because you always want those two animations to be run together.
+The contents of a [**Storyboard**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.Storyboard) can be more than one animation definition. You might have more than one animation if you are applying related animations to two properties of the same target object. For example, you might change both the [**TranslateX**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.compositetransform.translatex) and [**TranslateY**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.compositetransform.translatey) properties of a [**TranslateTransform**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.TranslateTransform) used as the [**RenderTransform**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.uielement.rendertransform) of a UI element; this will cause the element to translate diagonally. You need two different animations to accomplish that, but you might want the animations to be part of the same **Storyboard** because you always want those two animations to be run together.
The animations don't have to be the same type, or target the same object. They can have different durations, and don't have to share any property values.
-When the parent [**Storyboard**](/uwp/api/Windows.UI.Xaml.Media.Animation.Storyboard) runs, each of the animations within will run too.
+When the parent [**Storyboard**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.Storyboard) runs, each of the animations within will run too.
-The [**Storyboard**](/uwp/api/Windows.UI.Xaml.Media.Animation.Storyboard) class actually has a lot of the same animation properties as the animation types do, because both share the [**Timeline**](/uwp/api/Windows.UI.Xaml.Media.Animation.Timeline) base class. Thus, a **Storyboard** can have a [**RepeatBehavior**](/uwp/api/windows.ui.xaml.media.animation.timeline.repeatbehavior), or a [**BeginTime**](/uwp/api/windows.ui.xaml.media.animation.timeline.begintime). You don't usually set these on a **Storyboard** though unless you want all the contained animations to have that behavior. As a general rule, any **Timeline** property as set on a **Storyboard** applies to all its child animations. If let unset, the **Storyboard** has an implicit duration that's calculated from the longest [**Duration**](/uwp/api/Windows.UI.Xaml.Duration) value of the contained animations. An explicitly set [**Duration**](/uwp/api/windows.ui.xaml.media.animation.timeline.duration) on a **Storyboard** that's shorter than one of its child animations will cause that animation to get cut off, which isn't usually desirable.
+The [**Storyboard**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.Storyboard) class actually has a lot of the same animation properties as the animation types do, because both share the [**Timeline**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.Timeline) base class. Thus, a **Storyboard** can have a [**RepeatBehavior**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.timeline.repeatbehavior), or a [**BeginTime**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.timeline.begintime). You don't usually set these on a **Storyboard** though unless you want all the contained animations to have that behavior. As a general rule, any **Timeline** property as set on a **Storyboard** applies to all its child animations. If let unset, the **Storyboard** has an implicit duration that's calculated from the longest [**Duration**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Duration) value of the contained animations. An explicitly set [**Duration**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.timeline.duration) on a **Storyboard** that's shorter than one of its child animations will cause that animation to get cut off, which isn't usually desirable.
-A storyboard can't contain two animations that attempt to target and animate the same property on the same object. If you try this, you'll get a runtime error when the storyboard tries to run. This restriction applies even if the animations don't overlap in time because of deliberately different [**BeginTime**](/uwp/api/windows.ui.xaml.media.animation.timeline.begintime) values and durations. If you really want to apply a more complex animation timeline to the same property in a single storyboard, the way to do this is to use a key-frame animation. See [Key-frame and easing function animations](key-frame-and-easing-function-animations.md).
+A storyboard can't contain two animations that attempt to target and animate the same property on the same object. If you try this, you'll get a runtime error when the storyboard tries to run. This restriction applies even if the animations don't overlap in time because of deliberately different [**BeginTime**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.timeline.begintime) values and durations. If you really want to apply a more complex animation timeline to the same property in a single storyboard, the way to do this is to use a key-frame animation. See [Key-frame and easing function animations](key-frame-and-easing-function-animations.md).
The animation system can apply more than one animation to the value of a property, if those inputs come from multiple storyboards. Using this behavior deliberately for simultaneously running storyboards isn't common. However it's possible that an app-defined animation that you apply to a control property will be modifying the **HoldEnd** value of an animation that was previously run as part of the control's visual state model.
## Defining a storyboard as a resource
-A [**Storyboard**](/uwp/api/Windows.UI.Xaml.Media.Animation.Storyboard) is the container that you put animation objects in. You typically define the **Storyboard** as a resource that is available to the object that you want to animate, either in page-level [**Resources**](/uwp/api/windows.ui.xaml.frameworkelement.resources) or [**Application.Resources**](/uwp/api/windows.ui.xaml.application.resources).
+A [**Storyboard**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.Storyboard) is the container that you put animation objects in. You typically define the **Storyboard** as a resource that is available to the object that you want to animate, either in page-level [**Resources**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.frameworkelement.resources) or [**Application.Resources**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.application.resources).
-This next example shows how the previous example [**Storyboard**](/uwp/api/Windows.UI.Xaml.Media.Animation.Storyboard) would be contained in a page-level [**Resources**](/uwp/api/windows.ui.xaml.frameworkelement.resources) definition, where the **Storyboard** is a keyed resource of the root [**Page**](/uwp/api/Windows.UI.Xaml.Controls.Page). Note the [x:Name attribute](/windows/uwp/xaml-platform/x-name-attribute). This attribute is how you define a variable name for the **Storyboard**, so that other elements in XAML as well as code can refer to the **Storyboard** later.
+This next example shows how the previous example [**Storyboard**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.Storyboard) would be contained in a page-level [**Resources**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.frameworkelement.resources) definition, where the **Storyboard** is a keyed resource of the root [**Page**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Controls.Page). Note the [x:Name attribute](/windows/apps/develop/platform/xaml/x-name-attribute). This attribute is how you define a variable name for the **Storyboard**, so that other elements in XAML as well as code can refer to the **Storyboard** later.
```xaml
@@ -214,32 +202,32 @@ This next example shows how the previous example [**Storyboard**](/uwp/api/Windo
```
-Defining resources at the XAML root of a XAML file such as page.xaml or app.xaml is a common practice for how to organize keyed resources in your XAML. You also can factor resources into separate files and merge them into apps or pages. For more info, see [ResourceDictionary and XAML resource references](../style/xaml-resource-dictionary.md).
+Defining resources at the XAML root of a XAML file such as page.xaml or app.xaml is a common practice for how to organize keyed resources in your XAML. You also can factor resources into separate files and merge them into apps or pages. For more info, see [ResourceDictionary and XAML resource references](../../develop/platform/xaml/xaml-resource-dictionary.md).
> [!NOTE]
-> Windows Runtime XAML supports identifying resources either using the [x:Key attribute](/windows/uwp/xaml-platform/x-key-attribute) or the [x:Name attribute](/windows/uwp/xaml-platform/x-name-attribute). Using x:Name attribute is more common for a [**Storyboard**](/uwp/api/Windows.UI.Xaml.Media.Animation.Storyboard), because you'll want to reference it by variable name eventually, so that you can call its [**Begin**](/uwp/api/windows.ui.xaml.media.animation.storyboard.begin) method and run the animations. If you do use [x:Key attribute](/windows/uwp/xaml-platform/x-key-attribute), you'll need to use [**ResourceDictionary**](/uwp/api/Windows.UI.Xaml.ResourceDictionary) methods such as the [**Item**](/uwp/api/windows.ui.xaml.resourcedictionary) indexer to retrieve it as a keyed resource and then cast the retrieved object to **Storyboard** to use the **Storyboard** methods.
+> Windows Runtime XAML supports identifying resources either using the [x:Key attribute](/windows/apps/develop/platform/xaml/x-key-attribute) or the [x:Name attribute](/windows/apps/develop/platform/xaml/x-name-attribute). Using x:Name attribute is more common for a [**Storyboard**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.Storyboard), because you'll want to reference it by variable name eventually, so that you can call its [**Begin**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.storyboard.begin) method and run the animations. If you do use [x:Key attribute](/windows/apps/develop/platform/xaml/x-key-attribute), you'll need to use [**ResourceDictionary**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.ResourceDictionary) methods such as the [**Item**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.resourcedictionary) indexer to retrieve it as a keyed resource and then cast the retrieved object to **Storyboard** to use the **Storyboard** methods.
### Storyboards for visual states
-You also put your animations within a [**Storyboard**](/uwp/api/Windows.UI.Xaml.Media.Animation.Storyboard) unit when you are declaring the visual state animations for a control's visual appearance. In that case the **Storyboard** elements you define go into a [**VisualState**](/uwp/api/Windows.UI.Xaml.VisualState) container that's nested more deeply in a [**Style**](/uwp/api/Windows.UI.Xaml.Style) (it's the **Style** that is the keyed resource). You don't need a key or name for your **Storyboard** in this case because it's the **VisualState** that has a target name that the [**VisualStateManager**](/uwp/api/windows.ui.xaml.visualstatemanager) can invoke. The styles for controls are often factored into separate XAML [**ResourceDictionary**](/uwp/api/Windows.UI.Xaml.ResourceDictionary) files rather than placed in a page or app **Resources** collection. For more info, see [Storyboarded animations for visual states](/previous-versions/windows/apps/jj819808(v=win.10)).
+You also put your animations within a [**Storyboard**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.Storyboard) unit when you are declaring the visual state animations for a control's visual appearance. In that case the **Storyboard** elements you define go into a [**VisualState**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.VisualState) container that's nested more deeply in a [**Style**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Style) (it's the **Style** that is the keyed resource). You don't need a key or name for your **Storyboard** in this case because it's the **VisualState** that has a target name that the [**VisualStateManager**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.visualstatemanager) can invoke. The styles for controls are often factored into separate XAML [**ResourceDictionary**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.ResourceDictionary) files rather than placed in a page or app **Resources** collection. For more info, see [Storyboarded animations for visual states](/previous-versions/windows/apps/jj819808(v=win.10)).
## Dependent and independent animations
At this point we need to introduce some important points about how the animation system works. In particular, animation interacts fundamentally with how a Windows Runtime app renders to the screen, and how that rendering uses processing threads. A Windows Runtime app always has a main UI thread, and this thread is responsible for updating the screen with current information. In addition, a Windows Runtime app has a composition thread, which is used for precalculating layouts immediately before they are shown. When you animate the UI, there's potential to cause a lot of work for the UI thread. The system must redraw large areas of the screen using fairly short time intervals between each refresh. This is necessary for capturing the latest property value of the animated property. If you're not careful, there's risk that an animation can make the UI less responsive, or will impact performance of other app features that are also on the same UI thread.
-The variety of animation that is determined to have some risk of slowing down the UI thread is called a *dependent animation*. An animation not subject to this risk is an *independent animation*. The distinction between dependent and independent animations isn't just determined by animation types ([**DoubleAnimation**](/uwp/api/Windows.UI.Xaml.Media.Animation.DoubleAnimation) and so on) as we described earlier. Instead, it's determined by which specific properties you are animating, and other factors like inheritance and composition of controls. There are circumstances where even if an animation does change UI, the animation can have minimal impact to the UI thread, and can instead be handled by the composition thread as an independent animation.
+The variety of animation that is determined to have some risk of slowing down the UI thread is called a *dependent animation*. An animation not subject to this risk is an *independent animation*. The distinction between dependent and independent animations isn't just determined by animation types ([**DoubleAnimation**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.DoubleAnimation) and so on) as we described earlier. Instead, it's determined by which specific properties you are animating, and other factors like inheritance and composition of controls. There are circumstances where even if an animation does change UI, the animation can have minimal impact to the UI thread, and can instead be handled by the composition thread as an independent animation.
An animation is independent if it has any of these characteristics:
-- The [**Duration**](/uwp/api/windows.ui.xaml.media.animation.timeline.duration) of the animation is 0 seconds (see Warning)
-- The animation targets [**UIElement.Opacity**](/uwp/api/Windows.UI.Xaml.UIElement.Opacity)
-- The animation targets a sub-property value of these [**UIElement**](/uwp/api/Windows.UI.Xaml.UIElement) properties: [**Transform3D**](/uwp/api/windows.ui.xaml.uielement.transform3d), [**RenderTransform**](/uwp/api/windows.ui.xaml.uielement.rendertransform), [**Projection**](/uwp/api/windows.ui.xaml.uielement.projection), [**Clip**](/uwp/api/windows.ui.xaml.uielement.clip)
-- The animation targets [**Canvas.Left**](/dotnet/api/system.windows.controls.canvas.left) or [**Canvas.Top**](/dotnet/api/system.windows.controls.canvas.top)
-- The animation targets a [**Brush**](/uwp/api/Windows.UI.Xaml.Media.Brush) value and uses a [**SolidColorBrush**](/uwp/api/Windows.UI.Xaml.Media.SolidColorBrush), animating its [**Color**](/uwp/api/Windows.UI.Xaml.Media.SolidColorBrush.Color)
-- The animation is an [**ObjectAnimationUsingKeyFrames**](/uwp/api/Windows.UI.Xaml.Media.Animation.ObjectAnimationUsingKeyFrames)
+- The [**Duration**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.timeline.duration) of the animation is 0 seconds (see Warning)
+- The animation targets [**UIElement.Opacity**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.UIElement.Opacity)
+- The animation targets a sub-property value of these [**UIElement**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.UIElement) properties: [**Transform3D**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.uielement.transform3d), [**RenderTransform**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.uielement.rendertransform), [**Projection**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.uielement.projection), [**Clip**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.uielement.clip)
+- The animation targets [**Canvas.Left**](/dotnet/api/system.windows.controls.canvas.left) or [**Canvas.Top**](/dotnet/api/system.windows.controls.canvas.top)
+- The animation targets a [**Brush**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Brush) value and uses a [**SolidColorBrush**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.SolidColorBrush), animating its [**Color**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.SolidColorBrush.Color)
+- The animation is an [**ObjectAnimationUsingKeyFrames**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.ObjectAnimationUsingKeyFrames)
> [!WARNING]
-> In order for your animation to be treated as independent, you must explicitly set `Duration="0"`. For example, if you remove `Duration="0"` from this XAML, the animation is treated as dependent, even though the [**KeyTime**](/uwp/api/windows.ui.xaml.media.animation.doublekeyframe.keytime) of the frame is "0:0:0".
+> In order for your animation to be treated as independent, you must explicitly set `Duration="0"`. For example, if you remove `Duration="0"` from this XAML, the animation is treated as dependent, even though the [**KeyTime**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.doublekeyframe.keytime) of the frame is "0:0:0".
```xaml
@@ -252,32 +240,32 @@ An animation is independent if it has any of these characteristics:
```
-If your animation doesn't meet these criteria, it's probably a dependent animation. By default, the animation system won't run a dependent animation. So during the process of developing and testing, you might not even be seeing your animation running. You can still use this animation, but you must specifically enable each such dependent animation. To enable your animation, set the **EnableDependentAnimation** property of the animation object to **true**. (Each [**Timeline**](/uwp/api/Windows.UI.Xaml.Media.Animation.Timeline) subclass that represents an animation has a different implementation of the property but they're all named `EnableDependentAnimation`.)
+If your animation doesn't meet these criteria, it's probably a dependent animation. By default, the animation system won't run a dependent animation. So during the process of developing and testing, you might not even be seeing your animation running. You can still use this animation, but you must specifically enable each such dependent animation. To enable your animation, set the **EnableDependentAnimation** property of the animation object to **true**. (Each [**Timeline**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.Timeline) subclass that represents an animation has a different implementation of the property but they're all named `EnableDependentAnimation`.)
The requirement of enabling dependent animations falling onto the app developer is a conscious design aspect of the animation system and the development experience. We want developers to be aware that animations do have a performance cost for the responsiveness of your UI. Poorly performing animations are difficult to isolate and debug in a full-scale app. So it's better to turn on only the dependent animations you really need for your app's UI experience. We didn't want to make it too easy to compromise your app's performance because of decorative animations that use a lot of cycles. For more info on performance tips for animation, see [Optimize animations and media](/windows/uwp/debug-test-perf/optimize-animations-and-media).
-As an app developer, you can also choose to apply an app-wide setting that always disables dependent animations, even those where **EnableDependentAnimation** is **true**. See [**Timeline.AllowDependentAnimations**](/uwp/api/windows.ui.xaml.media.animation.timeline.allowdependentanimations).
+As an app developer, you can also choose to apply an app-wide setting that always disables dependent animations, even those where **EnableDependentAnimation** is **true**. See [**Timeline.AllowDependentAnimations**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.timeline.allowdependentanimations).
> [!TIP]
-> If you're using the Animation Pane in Blend for Visual Studio 2019, whenever you attempt to apply a dependent animation to a visual state property, warnings will be displayed in the designer.
-> Warnings will not show in the build output or Error List.
-> If you're editing XAML by hand, the designer will not show a warning.
+> If you're using the Animation Pane in Blend for Visual Studio 2019, whenever you attempt to apply a dependent animation to a visual state property, warnings will be displayed in the designer.
+> Warnings will not show in the build output or Error List.
+> If you're editing XAML by hand, the designer will not show a warning.
> At runtime when debugging, the Output pane's Debug output will show a warning that the animation is not independent and will be skipped.
## Starting and controlling an animation
-Everything we've shown you so far doesn't actually cause an animation to run or be applied! Until the animation is started and is running, the value changes that an animation is declaring in XAML are latent and won't happen yet. You must explicitly start an animation in some way that's related to the app lifetime or the user experience. At the simplest level, you start an animation by calling the [**Begin**](/uwp/api/windows.ui.xaml.media.animation.storyboard.begin) method on the [**Storyboard**](/uwp/api/Windows.UI.Xaml.Media.Animation.Storyboard) that's the parent for that animation. You can't call methods from XAML directly, so whatever you do to enable your animations, you'll be doing it from code. That will either be the code-behind for the pages or components of your app, or perhaps the logic of your control if you're defining a custom control class.
+Everything we've shown you so far doesn't actually cause an animation to run or be applied! Until the animation is started and is running, the value changes that an animation is declaring in XAML are latent and won't happen yet. You must explicitly start an animation in some way that's related to the app lifetime or the user experience. At the simplest level, you start an animation by calling the [**Begin**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.storyboard.begin) method on the [**Storyboard**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.Storyboard) that's the parent for that animation. You can't call methods from XAML directly, so whatever you do to enable your animations, you'll be doing it from code. That will either be the code-behind for the pages or components of your app, or perhaps the logic of your control if you're defining a custom control class.
-Typically, you'll call [**Begin**](/uwp/api/windows.ui.xaml.media.animation.storyboard.begin) and just let the animation run to its duration completion. However, you can also use [**Pause**](/uwp/api/windows.ui.xaml.media.animation.storyboard.pause), [**Resume**](/uwp/api/windows.ui.xaml.media.animation.storyboard.resume) and [**Stop**](/uwp/api/windows.ui.xaml.media.animation.storyboard.stop) methods to control the [**Storyboard**](/uwp/api/Windows.UI.Xaml.Media.Animation.Storyboard) at run-time, as well as other APIs that are used for more advanced animation control scenarios.
+Typically, you'll call [**Begin**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.storyboard.begin) and just let the animation run to its duration completion. However, you can also use [**Pause**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.storyboard.pause), [**Resume**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.storyboard.resume) and [**Stop**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.storyboard.stop) methods to control the [**Storyboard**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.Storyboard) at run-time, as well as other APIs that are used for more advanced animation control scenarios.
-When you call [**Begin**](/uwp/api/windows.ui.xaml.media.animation.storyboard.begin) on a storyboard that contains an animation that repeats infinitely (`RepeatBehavior="Forever"`), that animation runs until the page containing it is unloaded, or you specifically call [**Pause**](/uwp/api/windows.ui.xaml.media.animation.storyboard.pause) or [**Stop**](/uwp/api/windows.ui.xaml.media.animation.storyboard.stop).
+When you call [**Begin**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.storyboard.begin) on a storyboard that contains an animation that repeats infinitely (`RepeatBehavior="Forever"`), that animation runs until the page containing it is unloaded, or you specifically call [**Pause**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.storyboard.pause) or [**Stop**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.storyboard.stop).
### Starting an animation from app code
-You can either start animations automatically, or in response to user actions. For the automatic case, you typically use an object lifetime event such as [**Loaded**](/uwp/api/windows.ui.xaml.frameworkelement.loaded) to act as the animation trigger. The **Loaded** event is a good event to use for this because at that point the UI is ready for interaction, and the animation won't be cut off at the beginning because another part of UI was still loading.
+You can either start animations automatically, or in response to user actions. For the automatic case, you typically use an object lifetime event such as [**Loaded**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.frameworkelement.loaded) to act as the animation trigger. The **Loaded** event is a good event to use for this because at that point the UI is ready for interaction, and the animation won't be cut off at the beginning because another part of UI was still loading.
-In this example, the [**PointerPressed**](/uwp/api/windows.ui.xaml.uielement.pointerpressed) event is attached to the rectangle so that when the user clicks the rectangle, the animation begins.
+In this example, the [**PointerPressed**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.uielement.pointerpressed) event is attached to the rectangle so that when the user clicks the rectangle, the animation begins.
```xaml
```
-The event handler start the [**Storyboard**](/uwp/api/Windows.UI.Xaml.Media.Animation.Storyboard) (the animation) by using the [**Begin**](/uwp/api/windows.ui.xaml.media.animation.storyboard.begin) method of the **Storyboard**.
+The event handler start the [**Storyboard**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.Storyboard) (the animation) by using the [**Begin**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.storyboard.begin) method of the **Storyboard**.
```csharp
myStoryboard.Begin();
@@ -295,46 +283,44 @@ myStoryboard.Begin();
myStoryboard().Begin();
```
-```cpp
-myStoryboard->Begin();
-```
-
-```vb
-myStoryBoard.Begin()
-```
-
-You can handle the [**Completed**](/uwp/api/windows.ui.xaml.media.animation.timeline.completed) event if you want other logic to run after the animation has finished applying values. Also, for troubleshooting property system/animation interactions, the [**GetAnimationBaseValue**](/uwp/api/windows.ui.xaml.dependencyobject.getanimationbasevalue) method can be useful.
+You can handle the [**Completed**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.timeline.completed) event if you want other logic to run after the animation has finished applying values. Also, for troubleshooting property system/animation interactions, the [**GetAnimationBaseValue**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.dependencyobject.getanimationbasevalue) method can be useful.
> [!TIP]
> Whenever you are coding for an app scenario where you are starting an animation from app code, you might want to review again whether an animation or transition already exists in the animation library for your UI scenario. The library animations enable a more consistent UI experience across all Windows Runtime apps, and are easier to use.
-
-
### Animations for visual states
-The run behavior for a [**Storyboard**](/uwp/api/Windows.UI.Xaml.Media.Animation.Storyboard) that's used to define a control's visual state is different from how an app might run a storyboard directly. As applied to a visual state definition in XAML, the **Storyboard** is an element of a containing [**VisualState**](/uwp/api/Windows.UI.Xaml.VisualState), and the state as a whole is controlled by using the [**VisualStateManager**](/uwp/api/windows.ui.xaml.visualstatemanager) API. Any animations within will run according to their animation values and [**Timeline**](/uwp/api/Windows.UI.Xaml.Media.Animation.Timeline) properties when the containing **VisualState** is used by a control. For more info, see [Storyboards for visual states](/previous-versions/windows/apps/jj819808(v=win.10)). For visual states, the apparent [**FillBehavior**](/uwp/api/windows.ui.xaml.media.animation.timeline.fillbehavior) is different. If a visual state is changed to another state, all the property changes applied by the previous visual state and its animations are canceled, even if the new visual state doesn't specifically apply a new animation to a property.
+The run behavior for a [**Storyboard**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.Storyboard) that's used to define a control's visual state is different from how an app might run a storyboard directly. As applied to a visual state definition in XAML, the **Storyboard** is an element of a containing [**VisualState**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.VisualState), and the state as a whole is controlled by using the [**VisualStateManager**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.visualstatemanager) API. Any animations within will run according to their animation values and [**Timeline**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.Timeline) properties when the containing **VisualState** is used by a control. For more info, see [Storyboards for visual states](/previous-versions/windows/apps/jj819808(v=win.10)). For visual states, the apparent [**FillBehavior**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.timeline.fillbehavior) is different. If a visual state is changed to another state, all the property changes applied by the previous visual state and its animations are canceled, even if the new visual state doesn't specifically apply a new animation to a property.
### **Storyboard** and **EventTrigger**
-There is one way to start an animation that can be declared entirely in XAML. However, this technique isn't widely used anymore. It's a legacy syntax from WPF and early versions of Silverlight prior to [**VisualStateManager**](/uwp/api/windows.ui.xaml.visualstatemanager) support. This [**EventTrigger**](/uwp/api/Windows.UI.Xaml.EventTrigger) syntax still works in Windows Runtime XAML for import/compatibility reasons, but only works for a trigger behavior based on the [**FrameworkElement.Loaded**](/uwp/api/windows.ui.xaml.frameworkelement.loaded) event; attempting to trigger off other events will throw exceptions or fail to compile. For more info, see [**EventTrigger**](/uwp/api/Windows.UI.Xaml.EventTrigger) or [**BeginStoryboard**](/uwp/api/Windows.UI.Xaml.Media.Animation.BeginStoryboard).
+There is one way to start an animation that can be declared entirely in XAML. However, this technique isn't widely used anymore. It's a legacy syntax from WPF and early versions of Silverlight prior to [**VisualStateManager**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.visualstatemanager) support. This [**EventTrigger**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.EventTrigger) syntax still works in Windows Runtime XAML for import/compatibility reasons, but only works for a trigger behavior based on the [**FrameworkElement.Loaded**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.frameworkelement.loaded) event; attempting to trigger off other events will throw exceptions or fail to compile. For more info, see [**EventTrigger**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.EventTrigger) or [**BeginStoryboard**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.BeginStoryboard).
## Animating XAML attached properties
-It's not a common scenario, but you can apply an animated value to a XAML attached property. For more info on what attached properties are and how they work, see [Attached properties overview](/windows/uwp/xaml-platform/attached-properties-overview). Targeting an attached property requires a [property-path syntax](/windows/uwp/xaml-platform/property-path-syntax) that encloses the property name in parentheses. You can animate the built-in attached properties such as [**Canvas.ZIndex**](/previous-versions/windows/silverlight/dotnet-windows-silverlight/cc190397(v=vs.95)) by using an [**ObjectAnimationUsingKeyFrames**](/uwp/api/Windows.UI.Xaml.Media.Animation.ObjectAnimationUsingKeyFrames) that applies discrete integer values. However, an existing limitation of the Windows Runtime XAML implementation is that you cannot animate a custom attached property.
+It's not a common scenario, but you can apply an animated value to a XAML attached property. For more info on what attached properties are and how they work, see [Attached properties overview](/windows/apps/develop/platform/xaml/attached-properties-overview). Targeting an attached property requires a [property-path syntax](/windows/apps/develop/platform/xaml/property-path-syntax) that encloses the property name in parentheses. You can animate the built-in attached properties such as [**Canvas.ZIndex**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.canvas.zindex) by using an [**ObjectAnimationUsingKeyFrames**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.ObjectAnimationUsingKeyFrames) that applies discrete integer values. However, an existing limitation of the Windows Runtime XAML implementation is that you cannot animate a custom attached property.
## More animation types, and next steps for learning about animating your UI
Up to now, we've shown the custom animations that are animating between two values, and then linearly interpolating the values as necessary while the animation runs. These are called **From**/**To**/**By** animations. But there's another animation type that enables you to declare intermediate values that fall between the start and end. These are called *key-frame animations*. There's also a way to alter the interpolation logic on either a **From**/**To**/**By** animation or a key-frame animation. This involves applying an easing function. For more info on these concepts, see [Key-frame and easing function animations](key-frame-and-easing-function-animations.md).
-## Related topics
+## Differences with WPF
+
+If you are familiar with Windows Presentation Foundation (WPF), read this section; otherwise, you can skip it.
-* [Property-path syntax](/windows/uwp/xaml-platform/property-path-syntax)
-* [Dependency properties overview](/windows/uwp/xaml-platform/dependency-properties-overview)
-* [Key-frame and easing function animations](key-frame-and-easing-function-animations.md)
-* [Storyboarded animations for visual states](/previous-versions/windows/apps/jj819808(v=win.10))
-* [Control templates](../style/xaml-control-templates.md)
-* [**Storyboard**](/uwp/api/Windows.UI.Xaml.Media.Animation.Storyboard)
-* [**Storyboard.TargetProperty**](/previous-versions/windows/silverlight/dotnet-windows-silverlight/ms616983(v=vs.95))
-
+In general, creating storyboarded animations in a Windows Runtime app is like WPF. But there are a number of important differences:
+
+- Storyboarded animations are not the only way to visually animate a UI, nor are they necessarily the easiest way for app developers to do so. Rather than using storyboarded animations it's often a better design practice to use theme animations and transition animations. These can quickly create recommended UI animations without getting into the intricacies of animation property targeting. For more info see [Animations in XAML](xaml-animation.md).
+- In the Windows Runtime, many XAML controls include theme animations and transition animations as part of their built-in behavior. For the most part, WPF controls didn't have a default animation behavior.
+- Not all custom animations you create can run by default in a Windows Runtime app, if the animation system determines that the animation might cause bad performance in your UI. Animations where the system determines there could be a performance impact are called *dependent animations*. It's dependent because the clocking of your animation is directly working against the UI thread, which is also where active user input and other updates are trying to apply the runtime changes to UI. A dependent animation that's consuming extensive system resources on the UI thread can make the app appear unresponsive in certain situations. If your animation causes a layout change or otherwise has the potential to impact performance on the UI thread, you often need to explicitly enable the animation to see it run. That's what the **EnableDependentAnimation** property on specific animation classes is for. See [Dependent and independent animations](./storyboarded-animations.md#dependent-and-independent-animations) for more info.
+- Custom easing functions are not currently supported in the Windows Runtime.
+
+## Related topics
-
+- [Property-path syntax](/windows/apps/develop/platform/xaml/property-path-syntax)
+- [Dependency properties overview](/windows/apps/develop/platform/xaml/dependency-properties-overview)
+- [Key-frame and easing function animations](key-frame-and-easing-function-animations.md)
+- [Storyboarded animations for visual states](/previous-versions/windows/apps/jj819808(v=win.10))
+- [Control templates](../../develop/platform/xaml/xaml-control-templates.md)
+- [**Storyboard**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.Storyboard)
+- [**Storyboard.TargetProperty**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.storyboard.targetproperty)
diff --git a/hub/apps/design/motion/timing-and-easing.md b/hub/apps/design/motion/timing-and-easing.md
index 12527cb0ec..a92a1083a4 100644
--- a/hub/apps/design/motion/timing-and-easing.md
+++ b/hub/apps/design/motion/timing-and-easing.md
@@ -3,12 +3,9 @@ description: Learn the importance of timing and easing in making motion feel nat
title: Timing and easing
label: Timing and easing
template: detail.hbs
-ms.date: 09/24/2020
-ms.topic: article
-keywords: windows 10, uwp
-pm-contact: stmoy
-design-contact: albeyih
-doc-status: Draft
+ms.date: 09/18/2024
+ms.topic: concept-article
+doc-status: Published
ms.localizationpriority: medium
ms.custom: RS5
---
@@ -18,18 +15,10 @@ While motion is based in the real world, we are also a digital medium, which com
## Examples
-
+> [!div class="nextstepaction"]
+> [Open the WinUI 3 Gallery app and see Easing Functions in action](winui3gallery://item/EasingFunction)
+
+[!INCLUDE [winui-3-gallery](../../../includes/winui-3-gallery.md)]
## Standard animation duration values
@@ -92,5 +81,6 @@ The resulting feel is that the object is trying its hardest to get out of the us
## Related articles
-- [Motion overview](index.md)
+- [Motion overview](../signature-experiences/motion.md)
+- [Fluent Design - Motion](https://fluent2.microsoft.design/motion)
- [Directionality and gravity](directionality-and-gravity.md)
diff --git a/hub/apps/design/motion/xaml-animation.md b/hub/apps/design/motion/xaml-animation.md
index ce5afd1701..fcd58b5a05 100644
--- a/hub/apps/design/motion/xaml-animation.md
+++ b/hub/apps/design/motion/xaml-animation.md
@@ -2,9 +2,8 @@
ms.assetid: 0C8DEE75-FB7B-4E59-81E3-55F8D65CD982
title: Animations overview
description: Use the animations from the Windows Runtime animation library to integrate the Windows look and feel into your app.
-ms.date: 09/24/2020
-ms.topic: article
-keywords: windows 10, uwp
+ms.date: 10/30/2025
+ms.topic: concept-article
ms.localizationpriority: medium
---
# Animations in XAML
@@ -16,13 +15,13 @@ Animations can enhance your app by adding movement and interactivity. By using t
Animations from the Windows Runtime animation library provide these benefits:
-- Motions that align to the [Guidelines for animations](./index.md)
-- Fast, fluid transitions between UI states that inform but do not distract the user
-- Visual behavior that indicates transitions within an app to the user
+- Motions that align to the [Guidelines for animations](./index.md)
+- Fast, fluid transitions between UI states that inform but do not distract the user
+- Visual behavior that indicates transitions within an app to the user
For example, when the user adds an item to a list, instead of the new item instantly appearing in the list, the new item animates into place. The other items in the list animate to their new positions over a short period of time, making room for the added item. The transition behavior here makes the control interaction more apparent to the user.
-Windows 10, version 1607 introduces a new [**ConnectedAnimationService**](/uwp/api/windows.ui.xaml.media.animation.connectedanimationservice) API for implementing animations where an element appears to animate between views during a navigation. This API has a different usage pattern from the other animation library API's. Usage of **ConnectedAnimationService** is covered in the [reference page](/uwp/api/windows.ui.xaml.media.animation.connectedanimationservice).
+Windows 10, version 1607 introduces a new [**ConnectedAnimationService**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.connectedanimationservice) API for implementing animations where an element appears to animate between views during a navigation. This API has a different usage pattern from the other animation library API's. Usage of **ConnectedAnimationService** is covered in the [reference page](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.connectedanimationservice).
The animation library does not provide animations for every possible scenario. There are cases where you might wish to create a custom animation in XAML. For more info, see [Storyboarded animations](storyboarded-animations.md).
@@ -32,84 +31,81 @@ Additionally, for certain advanced scenarios like animating an item based on scr
The Windows Runtime animation system and the animation library serve the larger goal of enabling controls and other parts of UI to have an animated behavior. There are several distinct types of animations.
-- *Theme transitions* are applied automatically when certain conditions change in the UI, involving controls or elements from the predefined Windows Runtime XAML UI types. These are termed *theme transitions* because the animations support the Windows look and feel, and define what all apps do for particular UI scenarios when they change from one interaction mode to another. The theme transitions are part of the animation library.
-- *Theme animations* are animations to one or more properties of predefined Windows Runtime XAML UI types. Theme animations differ from theme transitions because theme animations target one specific element and exist in specific visual states within a control, whereas the theme transitions are assigned to properties of the control that exist outside of the visual states and influence the transitions between those states. Many of the Windows Runtime XAML controls include theme animations within storyboards that are part of their control template, with the animations triggered by visual states. So long as you're not modifying the templates, you'll have those built-in theme animations available for the controls in your UI. However, if you do replace templates, then you'll be removing the built-in control theme animations too. To get them back, you must define a storyboard that includes theme animations within the control's set of visual states. You can also run theme animations from storyboards that aren't within visual states and start them with the [**Begin**](/uwp/api/windows.ui.xaml.media.animation.storyboard.begin) method, but that's less common. Theme animations are part of the animation library.
-- *Visual transitions* are applied when a control transitions from one of its defined visual states to another state. These are custom animations that you write, and are typically related to the custom template you write for a control and the visual state definitions within that template. The animation only runs during the time between states, and that's typically a short amount of time, a few seconds at most. For more info, see ["VisualTransition" section of Storyboarded animations for visual states](/previous-versions/windows/apps/jj819808(v=win.10)).
-- *Storyboarded animations* animate the value of a Windows Runtime dependency property over time. Storyboards can be defined as part of a visual transition, or triggered at runtime by the application. For more info, see [Storyboarded animations](storyboarded-animations.md). For more info about dependency properties and where they exist, see [Dependency properties overview](/windows/uwp/xaml-platform/dependency-properties-overview).
-- *Connected animations* provided by the new [**ConnectedAnimationService**](/uwp/api/windows.ui.xaml.media.animation.connectedanimationservice) API allow developers to easily create an effect where an element appears to animate between views during a navigation. This API is available starting in Windows 10, version 1607. See [**ConnectedAnimationService**](/uwp/api/windows.ui.xaml.media.animation.connectedanimationservice) for more information.
+- *Theme transitions* are applied automatically when certain conditions change in the UI, involving controls or elements from the predefined Windows Runtime XAML UI types. These are termed *theme transitions* because the animations support the Windows look and feel, and define what all apps do for particular UI scenarios when they change from one interaction mode to another. The theme transitions are part of the animation library.
+- *Theme animations* are animations to one or more properties of predefined Windows Runtime XAML UI types. Theme animations differ from theme transitions because theme animations target one specific element and exist in specific visual states within a control, whereas the theme transitions are assigned to properties of the control that exist outside of the visual states and influence the transitions between those states. Many of the Windows Runtime XAML controls include theme animations within storyboards that are part of their control template, with the animations triggered by visual states. So long as you're not modifying the templates, you'll have those built-in theme animations available for the controls in your UI. However, if you do replace templates, then you'll be removing the built-in control theme animations too. To get them back, you must define a storyboard that includes theme animations within the control's set of visual states. You can also run theme animations from storyboards that aren't within visual states and start them with the [**Begin**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.storyboard.begin) method, but that's less common. Theme animations are part of the animation library.
+- *Visual transitions* are applied when a control transitions from one of its defined visual states to another state. These are custom animations that you write, and are typically related to the custom template you write for a control and the visual state definitions within that template. The animation only runs during the time between states, and that's typically a short amount of time, a few seconds at most. For more info, see ["VisualTransition" section of Storyboarded animations for visual states](/previous-versions/windows/apps/jj819808(v=win.10)).
+- *Storyboarded animations* animate the value of a Windows Runtime dependency property over time. Storyboards can be defined as part of a visual transition, or triggered at runtime by the application. For more info, see [Storyboarded animations](storyboarded-animations.md). For more info about dependency properties and where they exist, see [Dependency properties overview](/windows/apps/develop/platform/xaml/dependency-properties-overview).
+- *Connected animations* provided by the new [**ConnectedAnimationService**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.connectedanimationservice) API allow developers to easily create an effect where an element appears to animate between views during a navigation. This API is available starting in Windows 10, version 1607. See [**ConnectedAnimationService**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.connectedanimationservice) for more information.
## Animations available in the library
The following animations are supplied in the animation library. Click on the name of an animation to learn more about their main usage scenarios, how to define them, and to see an example of the animation.
-- [Page transition](#page-transition): Animates page transitions in a [**Frame**](/uwp/api/Windows.UI.Xaml.Controls.Frame).
-- [Content and entrance transition](#content-transition-and-entrance-transition): Animates one piece or set of content into or out of view.
-- [Fade in/out, and crossfade](#fade-in-out-and-crossfade): Shows transient elements or controls, or refreshes a content area.
-- [Pointer up/down](#pointer-up-down): Gives visual feedback of a tap or click on a tile.
-- [Reposition](#reposition): Moves an element into a new position.
-- [Show/hide popup](#show-hide-popup): Displays contextual UI on top of the view.
-- [Show/hide edge UI](#show-hide-edge-ui): Slides edge-based UI, including large UI such as a panel, into or out of view.
-- [List item changes](#list-item-changes): Adds or deletes an item from a list, or reordering of the items.
-- [Drag/drop](#drag-drop): Gives visual feedback during a drag-and-drop operation.
+- [Page transition](#page-transition): Animates page transitions in a [**Frame**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Controls.Frame).
+- [Content and entrance transition](#content-transition-and-entrance-transition): Animates one piece or set of content into or out of view.
+- [Fade in/out, and crossfade](#fade-in-out-and-crossfade): Shows transient elements or controls, or refreshes a content area.
+- [Pointer up/down](#pointer-up-down): Gives visual feedback of a tap or click on a tile.
+- [Reposition](#reposition): Moves an element into a new position.
+- [Show/hide popup](#show-hide-popup): Displays contextual UI on top of the view.
+- [Show/hide edge UI](#show-hide-edge-ui): Slides edge-based UI, including large UI such as a panel, into or out of view.
+- [List item changes](#list-item-changes): Adds or deletes an item from a list, or reordering of the items.
+- [Drag/drop](#drag-drop): Gives visual feedback during a drag-and-drop operation.
### Page transition
-Use page transitions to animate navigation within an app. Since almost all apps use some kind of navigation, page transition animations are the most common type of theme animation used by apps. See [**NavigationThemeTransition**](/uwp/api/windows.ui.xaml.media.animation.navigationthemetransition) for more information about the page transition APIs.
-
-
+Use page transitions to animate navigation within an app. Since almost all apps use some kind of navigation, page transition animations are the most common type of theme animation used by apps. See [**NavigationThemeTransition**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.navigationthemetransition) for more information about the page transition APIs.
### Content transition and entrance transition
-Use content transition animations ([**ContentThemeTransition**](/uwp/api/Windows.UI.Xaml.Media.Animation.ContentThemeTransition)) to move a piece or a set of content into or out of the current view. For example, the content transition animations show content that was not ready to display when the page was first loaded, or when the content changes on a section of a page.
+Use content transition animations ([**ContentThemeTransition**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.ContentThemeTransition)) to move a piece or a set of content into or out of the current view. For example, the content transition animations show content that was not ready to display when the page was first loaded, or when the content changes on a section of a page.
-[**EntranceThemeTransition**](/uwp/api/Windows.UI.Xaml.Media.Animation.EntranceThemeTransition) represents a motion that can apply to content when a page or large section of UI is first loaded. Thus the first appearance of content can offer different feedback than a change to content does. [**EntranceThemeTransition**](/uwp/api/Windows.UI.Xaml.Media.Animation.EntranceThemeTransition) is equivalent to a [**NavigationThemeTransition**](/uwp/api/windows.ui.xaml.media.animation.navigationthemetransition) with the default parameters, but may be used outside of a [**Frame**](/uwp/api/Windows.UI.Xaml.Controls.Frame).
-
+[**EntranceThemeTransition**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.EntranceThemeTransition) represents a motion that can apply to content when a page or large section of UI is first loaded. Thus the first appearance of content can offer different feedback than a change to content does. [**EntranceThemeTransition**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.EntranceThemeTransition) is equivalent to a [**NavigationThemeTransition**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.navigationthemetransition) with the default parameters, but may be used outside of a [**Frame**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Controls.Frame).
-
+
### Fade in/out, and crossfade
-Use fade in and fade out animations to show or hide transient UI or controls. In XAML these are represented as [**FadeInThemeAnimation**](/uwp/api/Windows.UI.Xaml.Media.Animation.FadeInThemeAnimation) and [**FadeOutThemeAnimation**](/uwp/api/Windows.UI.Xaml.Media.Animation.FadeOutThemeAnimation). One example is in an app bar in which new controls can appear due to user interaction. Another example is a transient scroll bar or panning indicator that is faded out after no user input has been detected for some amount of time. Apps should also use the fade in animation when they transition from a placeholder item to the final item as content loads dynamically.
+Use fade in and fade out animations to show or hide transient UI or controls. In XAML these are represented as [**FadeInThemeAnimation**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.FadeInThemeAnimation) and [**FadeOutThemeAnimation**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.FadeOutThemeAnimation). One example is in an app bar in which new controls can appear due to user interaction. Another example is a transient scroll bar or panning indicator that is faded out after no user input has been detected for some amount of time. Apps should also use the fade in animation when they transition from a placeholder item to the final item as content loads dynamically.
-Use a crossfade animation to smooth the transition when an item's state is changing; for example, when the app refreshes the current contents of a view. The XAML animation library does not supply a dedicated crossfade animation (no equivalent for [**crossFade**](/previous-versions/windows/apps/br212661(v=win.10))), but you can achieve the same result using [**FadeInThemeAnimation**](/uwp/api/Windows.UI.Xaml.Media.Animation.FadeInThemeAnimation) and [**FadeOutThemeAnimation**](/uwp/api/Windows.UI.Xaml.Media.Animation.FadeOutThemeAnimation) with overlapped timing.
+Use a crossfade animation to smooth the transition when an item's state is changing; for example, when the app refreshes the current contents of a view. The XAML animation library does not supply a dedicated crossfade animation, but you can achieve the same result using [**FadeInThemeAnimation**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.FadeInThemeAnimation) and [**FadeOutThemeAnimation**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.FadeOutThemeAnimation) with overlapped timing.
### Pointer up/down
-Use the [**PointerUpThemeAnimation**](/uwp/api/Windows.UI.Xaml.Media.Animation.PointerUpThemeAnimation) and [**PointerDownThemeAnimation**](/uwp/api/Windows.UI.Xaml.Media.Animation.PointerDownThemeAnimation) animations to give the user feedback for a successful tap or click on a tile. For example, when a user clicks or taps down on a tile, the pointer down animation is played. Once the click or tap has been released, the pointer up animation is played.
+Use the [**PointerUpThemeAnimation**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.PointerUpThemeAnimation) and [**PointerDownThemeAnimation**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.PointerDownThemeAnimation) animations to give the user feedback for a successful tap or click on a tile. For example, when a user clicks or taps down on a tile, the pointer down animation is played. Once the click or tap has been released, the pointer up animation is played.
### Reposition
-Use the reposition animations ([**RepositionThemeAnimation**](/uwp/api/Windows.UI.Xaml.Media.Animation.RepositionThemeAnimation) or [**RepositionThemeTransition**](/uwp/api/Windows.UI.Xaml.Media.Animation.RepositionThemeTransition)) to move an element into a new position. For example, moving the headers in an items control uses the reposition animation.
+Use the reposition animations ([**RepositionThemeAnimation**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.RepositionThemeAnimation) or [**RepositionThemeTransition**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.RepositionThemeTransition)) to move an element into a new position. For example, moving the headers in an items control uses the reposition animation.
### Show/hide popup
-Use the [**PopInThemeAnimation**](/uwp/api/Windows.UI.Xaml.Media.Animation.PopInThemeAnimation) and [**PopOutThemeAnimation**](/uwp/api/Windows.UI.Xaml.Media.Animation.PopOutThemeAnimation) when you show and hide a [**Popup**](/uwp/api/Windows.UI.Xaml.Controls.Primitives.Popup) or similar contextual UI on top of the current view. [**PopupThemeTransition**](/uwp/api/Windows.UI.Xaml.Media.Animation.PopupThemeTransition) is a theme transition that's useful feedback if you want to light dismiss a popup.
+Use the [**PopInThemeAnimation**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.PopInThemeAnimation) and [**PopOutThemeAnimation**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.PopOutThemeAnimation) when you show and hide a [**Popup**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Controls.Primitives.Popup) or similar contextual UI on top of the current view. [**PopupThemeTransition**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.PopupThemeTransition) is a theme transition that's useful feedback if you want to light dismiss a popup.
### Show/hide edge UI
-Use the [**EdgeUIThemeTransition**](/uwp/api/Windows.UI.Xaml.Media.Animation.EdgeUIThemeTransition) animation to slide small, edge-based UI into and out of view. For example, use these animations when you show a custom app bar at the top or bottom of the screen or a UI surface for errors and warnings at the top of the screen.
+Use the [**EdgeUIThemeTransition**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.EdgeUIThemeTransition) animation to slide small, edge-based UI into and out of view. For example, use these animations when you show a custom app bar at the top or bottom of the screen or a UI surface for errors and warnings at the top of the screen.
-Use the [**PaneThemeTransition**](/uwp/api/Windows.UI.Xaml.Media.Animation.PaneThemeTransition) animation to show and hide a pane or panel. This is for large edge-based UI such as a custom keyboard or a task pane.
+Use the [**PaneThemeTransition**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.PaneThemeTransition) animation to show and hide a pane or panel. This is for large edge-based UI such as a custom keyboard or a task pane.
### List item changes
-Use the [**AddDeleteThemeTransition**](/uwp/api/Windows.UI.Xaml.Media.Animation.AddDeleteThemeTransition) animation to add animated behavior when you add or delete an item in an existing list. For add, the transition will first reposition existing items in the list to make space for the new items, and then add the new items. For delete, the transition removes items from a list and, if necessary, repositions the remaining list items once the deleted items have been removed.
+Use the [**AddDeleteThemeTransition**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.AddDeleteThemeTransition) animation to add animated behavior when you add or delete an item in an existing list. For add, the transition will first reposition existing items in the list to make space for the new items, and then add the new items. For delete, the transition removes items from a list and, if necessary, repositions the remaining list items once the deleted items have been removed.
-There's also a separate [**ReorderThemeTransition**](/uwp/api/Windows.UI.Xaml.Media.Animation.ReorderThemeTransition) that you apply if an item changes position in a list. This is animated differently than deleting an item and adding it in a new place with the associated delete/add animations.
+There's also a separate [**ReorderThemeTransition**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.ReorderThemeTransition) that you apply if an item changes position in a list. This is animated differently than deleting an item and adding it in a new place with the associated delete/add animations.
-Note that these animations are included in the default [**ListView**](/uwp/api/windows.ui.xaml.controls.listview) and [**GridView**](/uwp/api/windows.ui.xaml.controls.gridview) templates so you do not need to manually add these animations if you are already using these controls.
+Note that these animations are included in the default [**ListView**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.listview) and [**GridView**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.gridview) templates so you do not need to manually add these animations if you are already using these controls.
### Drag/drop
-Use the drag animations ([**DragItemThemeAnimation**](/uwp/api/Windows.UI.Xaml.Media.Animation.DragItemThemeAnimation), [**DragOverThemeAnimation**](/uwp/api/Windows.UI.Xaml.Media.Animation.DragOverThemeAnimation)) and drop animation ([**DropTargetItemThemeAnimation**](/uwp/api/Windows.UI.Xaml.Media.Animation.DropTargetItemThemeAnimation)) to give visual feedback when the user drags or drops an item.
+Use the drag animations ([**DragItemThemeAnimation**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.DragItemThemeAnimation), [**DragOverThemeAnimation**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.DragOverThemeAnimation)) and drop animation ([**DropTargetItemThemeAnimation**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.DropTargetItemThemeAnimation)) to give visual feedback when the user drags or drops an item.
When active, the animations show the user that the list can be rearranged around a dropped item. It is helpful for users to know where the item will be placed in a list if it is dropped at the current location. The animations give visual feedback that an item being dragged can be dropped between two other items in the list and that those items will move out of the way.
@@ -119,22 +115,20 @@ The following table summarizes our recommendations for which animation you shoul
| UI type | Recommended animation |
|---------|-----------------------|
-| Dialog box | [**FadeInThemeAnimation**](/uwp/api/Windows.UI.Xaml.Media.Animation.FadeInThemeAnimation) and [**FadeOutThemeAnimation**](/uwp/api/Windows.UI.Xaml.Media.Animation.FadeOutThemeAnimation) |
-| Flyout | [**PopInThemeAnimation**](/uwp/api/windows.ui.xaml.media.animation.popinthemeanimation) and [**PopOutThemeAnimation**](/uwp/api/windows.ui.xaml.media.animation.popoutthemeanimation) |
-| Tooltip | [**FadeInThemeAnimation**](/uwp/api/Windows.UI.Xaml.Media.Animation.FadeInThemeAnimation) and [**FadeOutThemeAnimation**](/uwp/api/Windows.UI.Xaml.Media.Animation.FadeOutThemeAnimation) |
-| Context menu | [**PopInThemeAnimation**](/uwp/api/windows.ui.xaml.media.animation.popinthemeanimation) and [**PopOutThemeAnimation**](/uwp/api/windows.ui.xaml.media.animation.popoutthemeanimation) |
-| Command bar | [**EdgeUIThemeTransition**](/uwp/api/windows.ui.xaml.media.animation.edgeuithemetransition) |
-| Task pane or edge-based panel | [**PaneThemeTransition**](/uwp/api/windows.ui.xaml.media.animation.panethemetransition) |
-| Contents of any UI container | [**ContentThemeTransition**](/uwp/api/windows.ui.xaml.media.animation.contentthemetransition) |
-| For controls or if no other animation applies | [**FadeInThemeAnimation**](/uwp/api/windows.ui.xaml.media.animation.fadeinthemeanimation) and [**FadeOutThemeAnimation**](/uwp/api/Windows.UI.Xaml.Media.Animation.FadeOutThemeAnimation) |
-
-
+| Dialog box | [**FadeInThemeAnimation**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.FadeInThemeAnimation) and [**FadeOutThemeAnimation**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.FadeOutThemeAnimation) |
+| Flyout | [**PopInThemeAnimation**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.popinthemeanimation) and [**PopOutThemeAnimation**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.popoutthemeanimation) |
+| Tooltip | [**FadeInThemeAnimation**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.FadeInThemeAnimation) and [**FadeOutThemeAnimation**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.FadeOutThemeAnimation) |
+| Context menu | [**PopInThemeAnimation**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.popinthemeanimation) and [**PopOutThemeAnimation**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.popoutthemeanimation) |
+| Command bar | [**EdgeUIThemeTransition**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.edgeuithemetransition) |
+| Task pane or edge-based panel | [**PaneThemeTransition**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.panethemetransition) |
+| Contents of any UI container | [**ContentThemeTransition**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.contentthemetransition) |
+| For controls or if no other animation applies | [**FadeInThemeAnimation**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.media.animation.fadeinthemeanimation) and [**FadeOutThemeAnimation**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.FadeOutThemeAnimation) |
## Transition animation examples
Ideally, your app uses animations to enhance the user interface or to make it more attractive without annoying your users. One way you can do this is to apply animated transitions to UI so that when something enters or leaves the screen or otherwise changes, the animation draws the attention of the user to the change. For example, your buttons may rapidly fade in and out of view rather than just appear and disappear. We created a number of APIs that can be used to create recommended or typical animation transitions that are consistent. The example here shows how to apply an animation to a button so that it swiftly slides into view.
-```xml
+```xaml
@@ -144,11 +138,11 @@ Ideally, your app uses animations to enhance the user interface or to make it mo
```
-In this code, we add the [**EntranceThemeTransition**](/uwp/api/Windows.UI.Xaml.Media.Animation.EntranceThemeTransition) object to the transition collection of the button. Now, when the button is first rendered, it swiftly slides into view rather than just appear. You can set a few properties on the animation object in order to adjust how far it slides and from what direction, but it's really meant to be a simple API for a specific scenario, that is, to make an eye-catching entrance.
+In this code, we add the [**EntranceThemeTransition**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Media.Animation.EntranceThemeTransition) object to the transition collection of the button. Now, when the button is first rendered, it swiftly slides into view rather than just appear. You can set a few properties on the animation object in order to adjust how far it slides and from what direction, but it's really meant to be a simple API for a specific scenario, that is, to make an eye-catching entrance.
-You can also define transition animation themes in the style resources of your app, allowing you to apply the effect uniformly. This example is equivalent to the previous one, only it is applied using a [**Style**](/uwp/api/Windows.UI.Xaml.Style):
+You can also define transition animation themes in the style resources of your app, allowing you to apply the effect uniformly. This example is equivalent to the previous one, only it is applied using a [**Style**](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.Style):
-```xml
+```xaml
-
-
-
-
-
-
-```
-
-For more info about implicit styles and how they work, see [Styling controls](xaml-styles.md) and [Control templates](xaml-control-templates.md).
-
-## Look up resources in code
-
-You access members of the resource dictionary like any other dictionary.
-
-> [!WARNING]
-> When you perform a resource lookup in code, only the resources in the `Page.Resources` dictionary are looked at. Unlike the [StaticResource markup extension](/windows/uwp/xaml-platform/staticresource-markup-extension), the code doesn't fall back to the `Application.Resources` dictionary if the resources aren't found in the first dictionary.
-
-
-
-This example shows how to retrieve the `redButtonStyle` resource out of a page's resource dictionary:
-
-```XAML
-
-
-
-
-
-
-```
-
-```csharp
- public sealed partial class MainPage : Page
- {
- public MainPage()
- {
- this.InitializeComponent();
- Style redButtonStyle = (Style)this.Resources["redButtonStyle"];
- }
- }
-```
-```cppwinrt
- MainPage::MainPage()
- {
- InitializeComponent();
- Windows::UI::Xaml::Style style = Resources().TryLookup(winrt::box_value(L"redButtonStyle")).as();
- }
-```
-
-To look up app-wide resources from code, use **Application.Current.Resources** to get the app's resource dictionary, as shown here.
-
-```XAML
-
-
-
-
-
-
-```
-
-```csharp
- public sealed partial class MainPage : Page
- {
- public MainPage()
- {
- this.InitializeComponent();
- Style appButtonStyle = (Style)Application.Current.Resources["appButtonStyle"];
- }
- }
-```
-```cppwinrt
- MainPage::MainPage()
- {
- InitializeComponent();
- Windows::UI::Xaml::Style style = Application::Current().Resources()
- .TryLookup(winrt::box_value(L"appButtonStyle"))
- .as();
- }
-```
-
-You can also add an application resource in code.
-
-There are two things to keep in mind when doing this.
-
-- First, you need to add the resources before any page tries to use the resource.
-- Second, you can't add resources in the App's constructor.
-
-You can avoid both problems if you add the resource in the [Application.OnLaunched](/uwp/api/windows.ui.xaml.application.onlaunched) method, like this.
-
-```csharp
-// App.xaml.cs
-
-sealed partial class App : Application
-{
- protected override void OnLaunched(LaunchActivatedEventArgs e)
- {
- Frame rootFrame = Window.Current.Content as Frame;
- if (rootFrame == null)
- {
- SolidColorBrush brush = new SolidColorBrush(Windows.UI.Color.FromArgb(255, 0, 255, 0)); // green
- this.Resources["brush"] = brush;
- // … Other code that VS generates for you …
- }
- }
-}
-```
-```cppwinrt
-// App.cpp
-
-void App::OnLaunched(LaunchActivatedEventArgs const& e)
-{
- Frame rootFrame{ nullptr };
- auto content = Window::Current().Content();
- if (content)
- {
- rootFrame = content.try_as();
- }
-
- // Do not repeat app initialization when the Window already has content,
- // just ensure that the window is active
- if (rootFrame == nullptr)
- {
- Windows::UI::Xaml::Media::SolidColorBrush brush{ Windows::UI::ColorHelper::FromArgb(255, 0, 255, 0) };
- Resources().Insert(winrt::box_value(L"brush"), winrt::box_value(brush));
- // … Other code that VS generates for you …
-```
-
-## Every FrameworkElement can have a ResourceDictionary
-
-[FrameworkElement](/uwp/api/Windows.UI.Xaml.FrameworkElement) is a base class that controls inherit from, and it has a [Resources](/uwp/api/windows.ui.xaml.frameworkelement.resources) property. So, you can add a local resource dictionary to any **FrameworkElement**.
-
-Here, both the [Page](/uwp/api/Windows.UI.Xaml.Controls.Page) and the [Border](/uwp/api/Windows.UI.Xaml.Controls.Border) have resource dictionaries, and they both have a resource called "greeting". The [TextBlock](/uwp/api/Windows.UI.Xaml.Controls.TextBlock) named 'textBlock2' is inside the **Border**, so its resource lookup looks first to the **Border**'s resources, then the **Page**'s resources, and then the [Application](/uwp/api/Windows.UI.Xaml.Application) resources. The **TextBlock** will read "Hola mundo".
-
-To access that element's resources from code, use that element's [Resources](/uwp/api/windows.ui.xaml.frameworkelement.resources) property. Accessing a [FrameworkElement](/uwp/api/Windows.UI.Xaml.FrameworkElement)'s resources in code, rather than XAML, will look only in that dictionary, not in parent element's dictionaries.
-
-```XAML
-
-
- Hello world
-
-
-
-
-
-
-
-
- Hola mundo
-
-
-
-
-
-
-
-
-
-
-```
-
-```csharp
- public sealed partial class MainPage : Page
- {
- public MainPage()
- {
- this.InitializeComponent();
- textBlock3.Text = (string)border.Resources["greeting"];
- }
- }
-```
-```cppwinrt
- MainPage::MainPage()
- {
- InitializeComponent();
- textBlock3().Text(unbox_value(border().Resources().TryLookup(winrt::box_value(L"greeting"))));
- }
-```
-
-## Merged resource dictionaries
-
-A *merged resource dictionary* combines one resource dictionary into another, usually in another file.
-
-> **Tip** You can create a resource dictionary file in Microsoft Visual Studio by using the **Add > New Item… > Resource Dictionary** option from the **Project** menu.
-
-Here, you define a resource dictionary in a separate XAML file called Dictionary1.xaml.
-
-```XAML
-
-
-
-
-
-
-
-```
-
-To use that dictionary, you merge it with your page's dictionary:
-
-```XAML
-
-
-
-
-
-
-
- Hello world
-
-
-
-
-
-
-```
-
-Here's what happens in this example. In ``, you declare ``. The XAML framework implicitly creates a resource dictionary for you when you add resources to ``; however, in this case, you don't want just any resource dictionary, you want one that contains merged dictionaries.
-
-So you declare ``, then add things to its `` collection. Each of those entries takes the form ``. To add more than one dictionary, just add a `` entry after the first entry.
-
-After `…`, you can optionally put additional resources in your main dictionary. You use resources from a merged to dictionary just like a regular dictionary. In the example above, `{StaticResource brush}` finds the resource in the child/merged dictionary (Dictionary1.xaml), while `{StaticResource greeting}` finds its resource in the main page dictionary.
-
-In the resource-lookup sequence, a [MergedDictionaries](/uwp/api/windows.ui.xaml.resourcedictionary.mergeddictionaries) dictionary is checked only after a check of all the other keyed resources of that [ResourceDictionary](/uwp/api/Windows.UI.Xaml.ResourceDictionary). After searching that level, the lookup reaches the merged dictionaries, and each item in **MergedDictionaries** is checked. If multiple merged dictionaries exist, these dictionaries are checked in the inverse of the order in which they are declared in the **MergedDictionaries** property. In the following example, if both Dictionary2.xaml and Dictionary1.xaml declared the same key, the key from Dictionary2.xaml is used first because it's last in the **MergedDictionaries** set.
-
-```XAML
-
-
-
-
-
-
-
-
-
-
-
-
-```
-
-Within the scope of any one [ResourceDictionary](/uwp/api/Windows.UI.Xaml.ResourceDictionary), the dictionary is checked for key uniqueness. However, that scope does not extend across different items in different [MergedDictionaries](/uwp/api/windows.ui.xaml.resourcedictionary.mergeddictionaries) files.
-
-You can use the combination of the lookup sequence and lack of unique key enforcement across merged-dictionary scopes to create a fallback value sequence of [ResourceDictionary](/uwp/api/Windows.UI.Xaml.ResourceDictionary) resources. For example, you might store user preferences for a particular brush color in the last merged resource dictionary in the sequence, using a resource dictionary that synchronizes to your app's state and user preference data. However, if no user preferences exist yet, you can define that same key string for a **ResourceDictionary** resource in the initial [MergedDictionaries](/uwp/api/windows.ui.xaml.resourcedictionary.mergeddictionaries) file, and it can serve as the fallback value. Remember that any value you provide in a primary resource dictionary is always checked before the merged dictionaries are checked, so if you want to use the fallback technique, don't define that resource in a primary resource dictionary.
-
-## Theme resources and theme dictionaries
-
-A [ThemeResource](/windows/uwp/xaml-platform/themeresource-markup-extension) is similar to a [StaticResource](/windows/uwp/xaml-platform/staticresource-markup-extension), but the resource lookup is reevaluated when the theme changes.
-
-In this example, you set the foreground of a [TextBlock](/uwp/api/Windows.UI.Xaml.Controls.TextBlock) to a value from the current theme.
-
-```XAML
-
-```
-
-A theme dictionary is a special type of merged dictionary that holds the resources that vary with the theme a user is currently using on his or her device. For example, the "light" theme might use a white color brush whereas the "dark" theme might use a dark color brush. The brush changes the resource that it resolves to, but otherwise the composition of a control that uses the brush as a resource could be the same. To reproduce the theme-switching behavior in your own templates and styles, instead of using [MergedDictionaries](/uwp/api/windows.ui.xaml.resourcedictionary.mergeddictionaries) as the property to merge items into the main dictionaries, use the [ThemeDictionaries](/uwp/api/windows.ui.xaml.resourcedictionary.themedictionaries) property.
-
-Each [ResourceDictionary](/uwp/api/Windows.UI.Xaml.ResourceDictionary) element within [ThemeDictionaries](/uwp/api/windows.ui.xaml.resourcedictionary.themedictionaries) must have an [x:Key](/windows/uwp/xaml-platform/x-key-attribute) value. The value is a string that names the relevant theme—for example, "Default", "Dark", "Light", or "HighContrast". Typically, `Dictionary1` and `Dictionary2` will define resources that have the same names but different values.
-
-Here, you use red text for the light theme and blue text for the dark theme.
-
-```XAML
-
-
-
-
-
-
-
-
-
-
-
-
-
-```
-
-In this example, you set the foreground of a [TextBlock](/uwp/api/Windows.UI.Xaml.Controls.TextBlock) to a value from the current theme.
-
-```XAML
-
-
-
-
-
-
-
-
-
-
-
-```
-
-For theme dictionaries, the active dictionary to be used for resource lookup changes dynamically, whenever [ThemeResource markup extension](/windows/uwp/xaml-platform/themeresource-markup-extension) is used to make the reference and the system detects a theme change. The lookup behavior that is done by the system is based on mapping the active theme to the [x:Key](/windows/uwp/xaml-platform/x-key-attribute) of a specific theme dictionary.
-
-It can be useful to examine the way that the theme dictionaries are structured in the default XAML design resources, which parallel the templates that the Windows Runtime uses by default for its controls. Open the XAML files in \\(Program Files)\\Windows Kits\\10\\DesignTime\\CommonConfiguration\\Neutral\\UAP\\<SDK version>\\Generic using a text editor or your IDE. Note how the theme dictionaries are defined first in generic.xaml, and how each theme dictionary defines the same keys. Each such key is then referenced by elements of composition in the various keyed elements that are outside the theme dictionaries and defined later in the XAML. There's also a separate themeresources.xaml file for design that contains only the theme resources and extra templates, not the default control templates. The theme areas are duplicates of what you'd see in generic.xaml.
-
-When you use XAML design tools to edit copies of styles and templates, the design tools extract sections from the XAML design resource dictionaries and place them as local copies of XAML dictionary elements that are part of your app and project.
-
-For more info and for a list of the theme-specific and system resources that are available to your app, see [XAML theme resources](xaml-theme-resources.md).
-
-## Lookup behavior for XAML resource references
-
-*Lookup behavior* is the term that describes how the XAML resources system tries to find a XAML resource. The lookup occurs when a key is referenced as a XAML resource reference from somewhere in the app's XAML. First, the resources system has predictable behavior for where it will check for the existence of a resource based on scope. If a resource isn't found in the initial scope, the scope expands. The lookup behavior continues on throughout the locations and scopes that a XAML resource could possibly be defined by an app or by the system. If all possible resource lookup attempts fail, an error often results. It's usually possible to eliminate these errors during the development process.
-
-The lookup behavior for XAML resource references starts with the object where the actual usage is applied and its own [Resources](/uwp/api/windows.ui.xaml.frameworkelement.resources) property. If a [ResourceDictionary](/uwp/api/Windows.UI.Xaml.ResourceDictionary) exists there, that **ResourceDictionary** is checked for an item that has the requested key. This first level of lookup is rarely relevant because you usually do not define and then reference a resource on the same object. In fact, a **Resources** property often doesn't exist here. You can make XAML resource references from nearly anywhere in XAML; you aren't limited to properties of [FrameworkElement](/uwp/api/Windows.UI.Xaml.FrameworkElement) subclasses.
-
-The lookup sequence then checks the next parent object in the runtime object tree of the app. If a [FrameworkElement.Resources](/uwp/api/windows.ui.xaml.frameworkelement.resources) exists and holds a [ResourceDictionary](/uwp/api/Windows.UI.Xaml.ResourceDictionary), the dictionary item with the specified key string is requested. If the resource is found, the lookup sequence stops and the object is provided to the location where the reference was made. Otherwise, the lookup behavior advances to the next parent level towards the object tree root. The search continues recursively upwards until the root element of the XAML is reached, exhausting the search of all possible immediate resource locations.
-
-> [!NOTE]
-> It is a common practice to define all the immediate resources at the root level of a page, both to take advantage of this resource-lookup behavior and also as a convention of XAML markup style.
-
-If the requested resource is not found in the immediate resources, the next lookup step is to check the [Application.Resources](/uwp/api/windows.ui.xaml.application.resources) property. **Application.Resources** is the best place to put any app-specific resources that are referenced by multiple pages in your app's navigation structure.
-
-> [!IMPORTANT]
-> The order of resources added to a ResourceDictionary affects the order in which they are applied. The `XamlControlsResources` dictionary overrides many default resource keys and should therefore be added to `Application.Resources` first so that it doesn't override any other custom styles or resources in your app.
-
-Control templates have another possible location in the reference lookup: theme dictionaries. A theme dictionary is a single XAML file that has a [ResourceDictionary](/uwp/api/Windows.UI.Xaml.ResourceDictionary) element as its root. The theme dictionary might be a merged dictionary from [Application.Resources](/uwp/api/windows.ui.xaml.application.resources). The theme dictionary might also be the control-specific theme dictionary for a templated custom control.
-
-Finally, there is a resource lookup against platform resources. Platform resources include the control templates that are defined for each of the system UI themes, and which define the default appearance of all the controls that you use for UI in a Windows Runtime app. Platform resources also include a set of named resources that relate to system-wide appearance and themes. These resources are technically a [MergedDictionaries](/uwp/api/windows.ui.xaml.resourcedictionary.mergeddictionaries) item, and thus are available for lookup from XAML or code once the app has loaded. For example, the system theme resources include a resource named "SystemColorWindowTextColor" that provides a [Color](/uwp/api/Windows.UI.Color) definition to match app text color to a system window's text color that comes from the operating system and user preferences. Other XAML styles for your app can refer to this style, or your code can get a resource lookup value (and cast it to **Color** in the example case).
-
-For more info and for a list of the theme-specific and system resources that are available to a Windows app that uses XAML, see [XAML theme resources](xaml-theme-resources.md).
-
-If the requested key is still not found in any of these locations, a XAML parsing error/exception occurs. In certain circumstances, the XAML parse exception may be a run-time exception that is not detected either by a XAML markup compile action, or by a XAML design environment.
-
-Because of the tiered lookup behavior for resource dictionaries, you can deliberately define multiple resource items that each have the same string value as the key, as long as each resource is defined at a different level. In other words, although keys must be unique within any given [ResourceDictionary](/uwp/api/Windows.UI.Xaml.ResourceDictionary), the uniqueness requirement does not extend to the lookup behavior sequence as a whole. During lookup, only the first such object that's successfully retrieved is used for the XAML resource reference, and then the lookup stops. You could use this behavior to request the same XAML resource by key at various positions within your app's XAML but get different resources back, depending on the scope from which the XAML resource reference was made and how that particular lookup behaves.
-
-## Forward references within a ResourceDictionary
-
-
-XAML resource references within a particular resource dictionary must reference a resource that has already been defined with a key, and that resource must appear lexically before the resource reference. Forward references cannot be resolved by a XAML resource reference. For this reason, if you use XAML resource references from within another resource, you must design your resource dictionary structure so that the resources that are used by other resources are defined first in a resource dictionary.
-
-Resources defined at the app level cannot make references to immediate resources. This is equivalent to attempting a forward reference, because the app resources are actually processed first (when the app first starts, and before any navigation-page content is loaded). However, any immediate resource can make a reference to an app resource, and this can be a useful technique for avoiding forward-reference situations.
-
-## XAML resources must be shareable
-
-
-For an object to exist in a [ResourceDictionary](/uwp/api/Windows.UI.Xaml.ResourceDictionary), that object must be *shareable*.
-
-Being shareable is required because, when the object tree of an app is constructed and used at run time, objects cannot exist at multiple locations in the tree. Internally, the resource system creates copies of resource values to use in the object graph of your app when each XAML resource is requested.
-
-A [ResourceDictionary](/uwp/api/Windows.UI.Xaml.ResourceDictionary) and Windows Runtime XAML in general supports these objects for shareable usage:
-
-- Styles and templates ([Style](/uwp/api/Windows.UI.Xaml.Style) and classes derived from [FrameworkTemplate](/uwp/api/Windows.UI.Xaml.FrameworkTemplate))
-- Brushes and colors (classes derived from [Brush](/uwp/api/Windows.UI.Xaml.Media.Brush), and [Color](/uwp/api/Windows.UI.Color) values)
-- Animation types including [Storyboard](/uwp/api/Windows.UI.Xaml.Media.Animation.Storyboard)
-- Transforms (classes derived from [GeneralTransform](/uwp/api/Windows.UI.Xaml.Media.GeneralTransform))
-- [Matrix](/uwp/api/Windows.UI.Xaml.Media.Matrix) and [Matrix3D](/uwp/api/Windows.UI.Xaml.Media.Media3D.Matrix3D)
-- [Point](/uwp/api/Windows.Foundation.Point) values
-- Certain other UI-related structures such as [Thickness](/uwp/api/Windows.UI.Xaml.Thickness) and [CornerRadius](/uwp/api/Windows.UI.Xaml.CornerRadius)
-- [XAML intrinsic data types](/windows/uwp/xaml-platform/xaml-intrinsic-data-types)
-
-You can also use custom types as a shareable resource if you follow the necessary implementation patterns. You define such classes in your backing code (or in runtime components that you include) and then instantiate those classes in XAML as a resource. Examples are object data sources and [IValueConverter](/uwp/api/Windows.UI.Xaml.Data.IValueConverter) implementations for data binding.
-
-Custom types must have a default constructor, because that's what a XAML parser uses to instantiate a class. Custom types used as resources can't have the [UIElement](/uwp/api/Windows.UI.Xaml.UIElement) class in their inheritance, because a **UIElement** can never be shareable (it's always intended to represent exactly one UI element that exists at one position in the object graph of your runtime app).
-
-## UserControl usage scope
-
-
-A [UserControl](/uwp/api/Windows.UI.Xaml.Controls.UserControl) element has a special situation for resource-lookup behavior because it has the inherent concepts of a definition scope and a usage scope. A **UserControl** that makes a XAML resource reference from its definition scope must be able to support the lookup of that resource within its own definition-scope lookup sequence—that is, it cannot access app resources. From a **UserControl** usage scope, a resource reference is treated as being within the lookup sequence towards its usage page root (just like any other resource reference made from an object in a loaded object tree) and can access app resources.
-
-## ResourceDictionary and XamlReader.Load
-
-You can use a [ResourceDictionary](/uwp/api/Windows.UI.Xaml.ResourceDictionary) as either the root or a part of the XAML input for the [XamlReader.Load](/uwp/api/windows.ui.xaml.markup.xamlreader.load) method. You can also include XAML resource references in that XAML if all such references are completely self-contained in the XAML submitted for loading. **XamlReader.Load** parses the XAML in a context that is not aware of any other **ResourceDictionary** objects, not even [Application.Resources](/uwp/api/windows.ui.xaml.application.resources). Also, don't use `{ThemeResource}` from within XAML submitted to **XamlReader.Load**.
-
-## Using a ResourceDictionary from code
-
-Most of the scenarios for a [ResourceDictionary](/uwp/api/Windows.UI.Xaml.ResourceDictionary) are handled exclusively in XAML. You declare the **ResourceDictionary** container and the resources within as a XAML file or set of XAML nodes in a UI definition file. And then you use XAML resource references to request those resources from other parts of XAML. Still, there are certain scenarios where your app might want to adjust the contents of a **ResourceDictionary** using code that executes while the app is running, or at least to query the contents of a **ResourceDictionary** to see if a resource is already defined. These code calls are made on a **ResourceDictionary** instance, so you must first retrieve one—either an immediate **ResourceDictionary** somewhere in the object tree by getting [FrameworkElement.Resources](/uwp/api/windows.ui.xaml.frameworkelement.resources), or `Application.Current.Resources`.
-
-In C\# or Microsoft Visual Basic code, you can reference a resource in a given [ResourceDictionary](/uwp/api/Windows.UI.Xaml.ResourceDictionary) by using the indexer ([Item](/dotnet/api/system.windows.resourcedictionary.item)). A **ResourceDictionary** is a string-keyed dictionary, so the indexer uses the string key instead of an integer index. In Visual C++ component extensions (C++/CX) code, use [Lookup](/uwp/api/windows.ui.xaml.resourcedictionary.lookup).
-
-When using code to examine or change a [ResourceDictionary](/uwp/api/Windows.UI.Xaml.ResourceDictionary), the behavior for APIs like [Lookup](/uwp/api/windows.ui.xaml.resourcedictionary.lookup) or [Item](/dotnet/api/system.windows.resourcedictionary.item) does not traverse from immediate resources to app resources; that's a XAML parser behavior that only happens as XAML pages are loaded. At run time, scope for keys is self-contained to the **ResourceDictionary** instance that you are using at the time. However, that scope does extend into [MergedDictionaries](/uwp/api/windows.ui.xaml.resourcedictionary.mergeddictionaries).
-
-Also, if you request a key that does not exist in the [ResourceDictionary](/uwp/api/Windows.UI.Xaml.ResourceDictionary), there may not be an error; the return value may simply be provided as **null**. You may still get an error, though, if you try to use the returned **null** as a value. The error would come from the property's setter, not your **ResourceDictionary** call. The only way you'd avoid an error is if the property accepted **null** as a valid value. Note how this behavior contrasts with XAML lookup behavior at XAML parse time; a failure to resolve the provided key from XAML at parse time results in a XAML parse error, even in cases where the property could have accepted **null**.
-
-Merged resource dictionaries are included into the index scope of the primary resource dictionary that references the merged dictionary at run time. In other words, you can use **Item** or [Lookup](/uwp/api/windows.ui.xaml.resourcedictionary.lookup) of the primary dictionary to find any objects that were actually defined in the merged dictionary. In this case, the lookup behavior does resemble the parse-time XAML lookup behavior: if there are multiple objects in merged dictionaries that each have the same key, the object from the last-added dictionary is returned.
-
-You are permitted to add items to an existing [ResourceDictionary](/uwp/api/Windows.UI.Xaml.ResourceDictionary) by calling **Add** (C\# or Visual Basic) or [Insert](/uwp/api/windows.ui.xaml.resourcedictionary.insert) (C++/CX). You could add the items to either immediate resources or app resources. Either of these API calls requires a key, which satisfies the requirement that each item in a **ResourceDictionary** must have a key. However, items that you add to a **ResourceDictionary** at run time are not relevant to XAML resource references. The necessary lookup for XAML resource references happens when that XAML is first parsed as the app is loaded (or a theme change is detected). Resources added to collections at run time weren't available then, and altering the **ResourceDictionary** doesn't invalidate an already retrieved resource from it even if you change the value of that resource.
-
-You also can remove items from a [ResourceDictionary](/uwp/api/Windows.UI.Xaml.ResourceDictionary) at run time, make copies of some or all items, or other operations. The members listing for **ResourceDictionary** indicates which APIs are available. Note that because **ResourceDictionary** has a projected API to support its underlying collection interfaces, your API options differ depending on whether you are using C\# or Visual Basic versus C++/CX.
-
-## ResourceDictionary and localization
-
-
-A XAML [ResourceDictionary](/uwp/api/Windows.UI.Xaml.ResourceDictionary) might initially contain strings that are to be localized. If so, store these strings as project resources instead of in a **ResourceDictionary**. Take the strings out of the XAML, and instead give the owning element an [x:Uid directive](/windows/uwp/xaml-platform/x-uid-directive) value. Then, define a resource in a resources file. Provide a resource name in the form *XUIDValue*.*PropertyName* and a resource value of the string that should be localized.
-
-## Custom resource lookup
-
-For advanced scenarios, you can implement a class that can have different behavior than the XAML resource reference lookup behavior described in this topic. To do this, you implement the class [CustomXamlResourceLoader](/uwp/api/Windows.UI.Xaml.Resources.CustomXamlResourceLoader), and then you can access that behavior by using the [CustomResource markup extension](/windows/uwp/xaml-platform/customresource-markup-extension) for resource references rather than using [StaticResource](/windows/uwp/xaml-platform/staticresource-markup-extension) or [ThemeResource](/windows/uwp/xaml-platform/themeresource-markup-extension). Most apps won't have scenarios that require this. For more info, see [CustomXamlResourceLoader](/uwp/api/Windows.UI.Xaml.Resources.CustomXamlResourceLoader).
-
-
-## Related topics
-
-* [ResourceDictionary](/uwp/api/Windows.UI.Xaml.ResourceDictionary)
-* [XAML overview](/windows/uwp/xaml-platform/xaml-overview)
-* [StaticResource markup extension](/windows/uwp/xaml-platform/staticresource-markup-extension)
-* [ThemeResource markup extension](/windows/uwp/xaml-platform/themeresource-markup-extension)
-* [XAML theme resources](xaml-theme-resources.md)
-* [Styling controls](xaml-styles.md)
-* [x:Key attribute](/windows/uwp/xaml-platform/x-key-attribute)
-
-
-
-
diff --git a/hub/apps/design/style/xaml-styles.md b/hub/apps/design/style/xaml-styles.md
deleted file mode 100644
index 492d559433..0000000000
--- a/hub/apps/design/style/xaml-styles.md
+++ /dev/null
@@ -1,308 +0,0 @@
----
-description: Styles let you set control properties and reuse those settings for a consistent appearance across multiple controls.
-MS-HAID: dev\_ctrl\_layout\_txt.styling\_controls
-MSHAttr: PreferredLib:/library/windows/apps
-Search.Product: eADQiWindows 10XVcnh
-ms.date: 01/03/2019
-title: XAML styles
-ms.assetid: AB469A46-FAF5-42D0-9340-948D0EDF4150
-label: XAML styles
-template: detail.hbs
-ms.topic: article
-ms.localizationpriority: medium
----
-# XAML styles
-
-
-
-
-
-You can customize the appearance of your apps in many ways by using the XAML framework. Styles let you set control properties and reuse those settings for a consistent appearance across multiple controls.
-
-## WinUI and styles
-
-Starting with WinUI 2.2, we have used the [Windows UI Library](../../winui/index.md) (WinUI) to deliver new visual style updates across our UI components. If you notice your UI is not updating to the latest styles, be sure to update to the latest WinUI NuGet package.
-
-Starting with WinUI 2.6, we provide new styles for most of the controls, and a new versioning system that let's you revert to the previous control styles if needed. We encourage you to use the new styles, as they better match the design direction of Windows. However, if your scenario cannot support the new styles, the previous versions are still available.
-
-You can change the style version by setting the `ControlsResourcesVersion` property on the `XamlControlsResources` that you include in your `Application.Resources` when you use WinUI version 2. `ControlsResourcesVersion` defaults to the enum value `Version2`.
-
-Setting this value to `Version1` causes `XamlControlsResources` to load the previous style versions instead of the new styles used by the latest WinUI version. Changing this property at runtime is not supported and VisualStudio's hot reload functionality will not work; however, after you rebuild your application you will see the control styles change.
-
-```xaml
-
-
-
-```
-
-## Style basics
-
-Use styles to extract visual property settings into reusable resources. Here's an example that shows 3 buttons with a style that sets the [BorderBrush](/uwp/api/windows.ui.xaml.controls.control.borderbrush), [BorderThickness](/uwp/api/windows.ui.xaml.controls.control.borderthickness) and [Foreground](/uwp/api/windows.ui.xaml.controls.control.foreground) properties. By applying a style, you can make the controls appear the same without having to set these properties on each control separately.
-
-
-
-You can define a style inline in the XAML for a control, or as a reusable resource. Define resources in an individual page's XAML file, in the App.xaml file, or in a separate resource dictionary XAML file. A resource dictionary XAML file can be shared across apps, and more than one resource dictionary can be merged in a single app. Where the resource is defined determines the scope in which it can be used. Page-level resources are available only in the page where they are defined. If resources with the same key are defined in both App.xaml and in a page, the resource in the page overrides the resource in App.xaml. If a resource is defined in a separate resource dictionary file, its scope is determined by where the resource dictionary is referenced.
-
-In the [Style](/uwp/api/Windows.UI.Xaml.Style) definition, you need a [TargetType](/uwp/api/windows.ui.xaml.style.targettype) attribute and a collection of one or more [Setter](/uwp/api/Windows.UI.Xaml.Setter) elements. The **TargetType** attribute is a string that specifies a [FrameworkElement](/uwp/api/Windows.UI.Xaml.FrameworkElement) type to apply the style to. The **TargetType** value must specify a **FrameworkElement**-derived type that's defined by the Windows Runtime or a custom type that's available in a referenced assembly. If you try to apply a style to a control and the control's type doesn't match the **TargetType** attribute of the style you're trying to apply, an exception occurs.
-
-Each [Setter](/uwp/api/Windows.UI.Xaml.Setter) element requires a [Property](/uwp/api/windows.ui.xaml.setter.property) and a [Value](/uwp/api/windows.ui.xaml.setter.value). These property settings indicate what control property the setting applies to, and the value to set for that property. You can set the **Setter.Value** with either attribute or property element syntax. The XAML here shows the style applied to the buttons shown previously. In this XAML, the first two **Setter** elements use attribute syntax, but the last **Setter**, for the [BorderBrush](/uwp/api/windows.ui.xaml.controls.control.borderbrush) property, uses property element syntax. The example doesn't use the [x:Key attribute](/windows/uwp/xaml-platform/x-key-attribute) attribute, so the style is implicitly applied to the buttons. Applying styles implicitly or explicitly is explained in the next section.
-
-```XAML
-
-
-
-
-
-
-
-
-
-```
-
-## Apply an implicit or explicit style
-
-If you define a style as a resource, there are two ways to apply it to your controls:
-
-- Implicitly, by specifying only a [TargetType](/uwp/api/windows.ui.xaml.style.targettype) for the [Style](/uwp/api/Windows.UI.Xaml.Style).
-- Explicitly, by specifying a [TargetType](/uwp/api/windows.ui.xaml.style.targettype) and an [x:Key attribute](/windows/uwp/xaml-platform/x-key-attribute) attribute for the [Style](/uwp/api/Windows.UI.Xaml.Style) and then by setting the target control's [Style](/uwp/api/windows.ui.xaml.frameworkelement.style) property with a [{StaticResource} markup extension](/windows/uwp/xaml-platform/staticresource-markup-extension) reference that uses the explicit key.
-
-If a style contains the [x:Key attribute](/windows/uwp/xaml-platform/x-key-attribute), you can only apply it to a control by setting the [Style](/uwp/api/windows.ui.xaml.frameworkelement.style) property of the control to the keyed style. In contrast, a style without an x:Key attribute is automatically applied to every control of its target type, that doesn't otherwise have an explicit style setting.
-
-Here are two buttons that demonstrate implicit and explicit styles.
-
-
-
-In this example, the first style has an [x:Key attribute](/windows/uwp/xaml-platform/x-key-attribute) and its target type is [Button](/uwp/api/Windows.UI.Xaml.Controls.Button). The first button's [Style](/uwp/api/windows.ui.xaml.frameworkelement.style) property is set to this key, so this style is applied explicitly. The second style is applied implicitly to the second button because its target type is **Button** and the style doesn't have an x:Key attribute.
-
-```XAML
-
-
-
-
-
-
-
-
-
-
-```
-
-## Use based-on styles
-
-To make styles easier to maintain and to optimize style reuse, you can create styles that inherit from other styles. You use the [BasedOn](/uwp/api/windows.ui.xaml.style.basedon) property to create inherited styles. Styles that inherit from other styles must target the same type of control or a control that derives from the type targeted by the base style. For example, if a base style targets [ContentControl](/uwp/api/Windows.UI.Xaml.Controls.ContentControl), styles that are based on this style can target **ContentControl** or types that derive from **ContentControl** such as [Button](/uwp/api/Windows.UI.Xaml.Controls.Button) and [ScrollViewer](/uwp/api/Windows.UI.Xaml.Controls.ScrollViewer). If a value is not set in the based-on style, it's inherited from the base style. To change a value from the base style, the based-on style overrides that value. The next example shows a **Button** and a [CheckBox](/uwp/api/Windows.UI.Xaml.Controls.CheckBox) with styles that inherit from the same base style.
-
-
-
-The base style targets [ContentControl](/uwp/api/Windows.UI.Xaml.Controls.ContentControl), and sets the [Height](/uwp/api/Windows.UI.Xaml.FrameworkElement.Height), and [Width](/uwp/api/Windows.UI.Xaml.FrameworkElement.Width) properties. The styles based on this style target [CheckBox](/uwp/api/Windows.UI.Xaml.Controls.CheckBox) and [Button](/uwp/api/Windows.UI.Xaml.Controls.Button), which derive from **ContentControl**. The based-on styles set different colors for the [BorderBrush](/uwp/api/windows.ui.xaml.controls.control.borderbrush) and [Foreground](/uwp/api/windows.ui.xaml.controls.control.foreground) properties. (You don't typically put a border around a **CheckBox**. We do it here to show the effects of the style.)
-
-```XAML
-
-
-
-
-
-
-
-
-
-
-
-
-```
-
-## Use tools to work with styles easily
-
-A fast way to apply styles to your controls is to right-click on a control on the Microsoft Visual Studio XAML design surface and select **Edit Style** or **Edit Template** (depending on the control you are right-clicking on). You can then apply an existing style by selecting **Apply Resource** or define a new style by selecting **Create Empty**. If you create an empty style, you are given the option to define it in the page, in the App.xaml file, or in a separate resource dictionary.
-
-## Lightweight styling
-
-Overriding the system brushes is generally done at the App or Page level, and in either case the color override will affect all controls that reference that brush – and in XAML many controls can reference the same system brush.
-
-
-
-```XAML
-
-
-
-
-
-
-
-
-
-
-
-```
-
-For states like PointerOver (mouse is hovered over the button), **PointerPressed** (button has been invoked), or Disabled (button is not interactable). These endings are appended onto the original Lightweight styling names: **ButtonBackgroundPointerOver**, **ButtonForegroundPressed**, **ButtonBorderBrushDisabled**, etc. Modifying those brushes as well, will make sure that your controls are colored consistently to your app's theme.
-
-Placing these brush overrides at the **App.Resources** level, will alter all the buttons within the entire app, instead of on a single page.
-
-### Per-control styling
-
-In other cases, changing a single control on one page only to look a certain way, without altering any other versions of that control, is desired:
-
-
-
-```XAML
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-```
-
-This would only effect that one "Special CheckBox" on the page where that control existed.
-
-### Custom controls
-
-When you are building your own custom controls that may be visually and/or functionally aligned with our built-in controls, consider using implicit styling and Lightweight styling resources to define your custom content. You can either use the resources directly, or create a new alias for the resource.
-
-#### Using control resources directly
-
-For example, if you are writing a control that looks like a Button, you can have your control reference the button resources directly, like this:
-
-```xaml
-
-```
-
-#### Aliasing control resources to new names
-
-Alternatively, if you prefer to make your own resources, you should alias those custom names to our default Lightweight styling resources.
-
-For example, your custom control's style might have special resource definitions:
-
-```xaml
-
-```
-
-In your Resource Dictionary or main definition, you would hook up the Lightweight styling resources to your custom ones:
-
-```xaml
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-```
-
-Its required that you use a `ThemeDictionary` that is duplicated three times in order to handle the three different theme changes properly (`Default`, `Light`, `HighContrast`).
-
-> [!CAUTION]
-> If you assign a Lightweight styling resource to a new alias, and also redefine the Lightweight styling resource, your customization might not be applied if the resource lookup is not in the correct order. For example, if you override `ButtonBackground` in a spot that is searched before `MyCustomControlBackground` is found, the override would be missed.
-
-## Avoid restyling controls
-
-The [Windows UI Library](../../winui/winui2/index.md) 2.2 or later includes new styles and templates for both WinUI and system controls.
-
-The best way to stay current with our latest visual styles is to use the latest WinUI 2 package and avoid custom styles and templates (also known as re-templating). Styles are still a convenient way to apply a set of values consistently across controls in your app. When doing this, make sure to be based on our latest styles.
-
-For system controls that use WinUI styles (`Windows.UI.Xaml.Controls` namespace), set `BasedOn="{StaticResource DefaultStyle}"`, where `` is the name of the control. For example:
-
-```xaml
-
-```
-
-For WinUI 2 controls (`Microsoft.UI.Xaml.Controls` namespace), the default style is defined in the metadata, so omit `BasedOn`.
-
-### Derived controls
-
-If you derive a custom control from an existing XAML control, it will not get the WinUI 2 styles by default. To apply the WinUI 2 styles:
-
-- Create a new [Style](/uwp/api/windows.ui.xaml.style) with its [TargetType](/uwp/api/windows.ui.xaml.style.targettype) set to your custom control.
-- Base the Style on the default style of the control you derived from.
-
-One common scenario for this is to derive a new control from [ContentDialog](/uwp/api/windows.ui.xaml.controls.contentdialog). This example shows how to create a new Style that applies `DefaultContentDialogStyle` to your custom dialog.
-
-```xaml
-
-
-
-
- ...
-
-
-
-```
-
-## The template property
-
-A style setter can be used for the [Template](/uwp/api/windows.ui.xaml.controls.control.template) property of a [Control](/uwp/api/Windows.UI.Xaml.Controls.Control), and in fact this makes up the majority of a typical XAML style and an app's XAML resources. This is discussed in more detail in the topic [Control templates](xaml-control-templates.md).
diff --git a/hub/apps/design/style/xaml-theme-resources.md b/hub/apps/design/style/xaml-theme-resources.md
deleted file mode 100644
index 2dfc2f95e3..0000000000
--- a/hub/apps/design/style/xaml-theme-resources.md
+++ /dev/null
@@ -1,281 +0,0 @@
----
-description: Theme resources in XAML are a set of resources that apply different values depending on which system theme is active.
-MS-HAID: dev\_ctrl\_layout\_txt.xaml\_theme\_resources
-MSHAttr: PreferredLib:/library/windows/apps
-Search.Product: eADQiWindows 10XVcnh
-title: XAML theme resources
-ms.assetid: 41B87DBF-E7A2-44E9-BEBA-AF6EEBABB81B
-label: XAML theme resources
-template: detail.hbs
-ms.date: 09/24/2020
-ms.topic: article
-keywords: windows 10, uwp
-ms.localizationpriority: medium
----
-# XAML theme resources
-
-Theme resources in XAML are a set of resources that apply different values depending on which system theme is active. There are 3 themes that the XAML framework supports: "Light", "Dark", and "HighContrast".
-
-**Prerequisites**: This topic assumes that you have read [ResourceDictionary and XAML resource references](xaml-resource-dictionary.md).
-
-## Theme resources v. static resources
-
-There are two XAML markup extensions that can reference a XAML resource from an existing XAML resource dictionary: [{StaticResource} markup extension](/windows/uwp/xaml-platform/staticresource-markup-extension) and [{ThemeResource} markup extension](/windows/uwp/xaml-platform/themeresource-markup-extension).
-
-Evaluation of a [{ThemeResource} markup extension](/windows/uwp/xaml-platform/themeresource-markup-extension) occurs when the app loads and subsequently each time the theme changes at runtime. This is typically the result of the user changing their device settings or from a programmatic change within the app that alters its current theme.
-
-In contrast, a [{StaticResource} markup extension](/windows/uwp/xaml-platform/staticresource-markup-extension) is evaluated only when the XAML is first loaded by the app. It does not update. It's similar to a find and replace in your XAML with the actual runtime value at app launch.
-
-## Theme resources in the resource dictionary structure
-
-Each theme resource is part of the XAML file themeresources.xaml. For design purposes, themeresources.xaml is available in the \\(Program Files)\\Windows Kits\\10\\DesignTime\\CommonConfiguration\\Neutral\\UAP\\<SDK version>\\Generic folder from a Windows Software Development Kit (SDK) installation. The resource dictionaries in themeresources.xaml are also reproduced in generic.xaml in the same directory.
-
-The Windows Runtime doesn't use these physical files for runtime lookup. That's why they are specifically in a DesignTime folder, and they aren't copied into apps by default. Instead, these resource dictionaries exist in memory as part of the Windows Runtime itself, and your app's XAML resource references to theme resources (or system resources) resolve there at runtime.
-
-## Guidelines for custom theme resources
-
-Follow these guidelines when you define and consume your own custom theme resources:
-
-- Specify theme dictionaries for both "Light" and "Dark" in addition to your "HighContrast" dictionary. Although you can create a [ResourceDictionary](/uwp/api/Windows.UI.Xaml.ResourceDictionary) with "Default" as the key, it's preferred to be explicit and instead use "Light", "Dark", and "HighContrast".
-
-- Use the [{ThemeResource} markup extension](/windows/uwp/xaml-platform/themeresource-markup-extension) in: Styles, Setters, Control templates, Property setters, and Animations.
-
-- Don't use the [{ThemeResource} markup extension](/windows/uwp/xaml-platform/themeresource-markup-extension) in your resource definitions inside your [ThemeDictionaries](/uwp/api/windows.ui.xaml.resourcedictionary.themedictionaries). Use [{StaticResource} markup extension](/windows/uwp/xaml-platform/staticresource-markup-extension) instead.
-
- EXCEPTION: You can use the [{ThemeResource} markup extension](/windows/uwp/xaml-platform/themeresource-markup-extension) to reference resources that are agnostic to the app theme in your [ThemeDictionaries](/uwp/api/windows.ui.xaml.resourcedictionary.themedictionaries). Examples of these resources are accent color resources like `SystemAccentColor`, or system color resources, which are typically prefixed with "SystemColor" like `SystemColorButtonFaceColor`.
-
-> [!CAUTION]
-> If you don't follow these guidelines, you might see unexpected behavior related to themes in your app. For more info, see the [Troubleshooting theme resources](#troubleshooting-theme-resources) section.
-
-## The XAML color ramp and theme-dependent brushes
-
-The combined set of colors for "Light", "Dark", and "HighContrast" themes make up the *Windows color ramp* in XAML. Whether you want to modify the system themes, or apply a theme to your own XAML elements, it's important to understand how the color resources are structured.
-
-For additional information about how to apply color in your Windows app, please see [Color in Windows apps](../style/color.md).
-
-### Light and Dark theme colors
-
-The XAML framework provides a set of named [Color](/uwp/api/Windows.UI.Color) resources with values that are tailored for the "Light" and "Dark" themes. For WinUI 2, the theme resources are defined in the [Common theme resources Xaml file](https://github.com/microsoft/microsoft-ui-xaml/blob/master/dev/CommonStyles/Common_themeresources_any.xaml). The color names are very descriptive of their intended usage, and there's a corresponding SolidColorBrush resource for every Color resource.
-
-### Windows system contrast theme colors
-
-In addition to the set of resources provided by the XAML framework, there's a set of color values derived from the Windows system palette. These colors are not specific to the Windows Runtime or Windows apps. However, many of the XAML [Brush](/uwp/api/Windows.UI.Xaml.Media.Brush) resources consume these colors when the system is operating (and the app is running) using the "HighContrast" theme. The XAML framework provides these system-wide colors as keyed resources. The keys follow the naming format: `SystemColor[name]Color`.
-
-For more information about supporting contrast themes, see [Contrast themes](../accessibility/high-contrast-themes.md).
-
-### System accent color
-
-In addition to the system contrast theme colors, the system accent color is provided as a special color resource using the key `SystemAccentColor`. At runtime, this resource gets the color that the user has specified as the accent color in the Windows personalization settings.
-
-> [!NOTE]
-> While it's possible to override the system color resources, it's a best practice to respect the user's color choices, especially for contrast theme settings.
-
-### Theme-dependent brushes
-
-The color resources shown in the preceding sections are used to set the [Color](/uwp/api/Windows.UI.Xaml.Media.SolidColorBrush.Color) property of [SolidColorBrush](/uwp/api/Windows.UI.Xaml.Media.SolidColorBrush) resources in the system theme resource dictionaries. You use the brush resources to apply the color to XAML elements.
-
-Let's look at how the color value for this brush is determined at run-time. In the "Light" and "Dark" resource dictionaries, this brush is defined like this:
-
-``
-
-In the "HighContrast" resource dictionary, this brush is defined like this:
-
-``
-
-When this brush is applied to a XAML element, its color is determined at run-time by the current theme, as shown in this table.
-
-| Theme | Color resource | Runtime value |
-|--------------|----------------------------|------------------------------------------------------------|
-| Light | TextFillColorPrimary | \#E4000000 |
-| Dark | TextFillColorPrimary | \#FFFFFFFF |
-| HighContrast | SystemColorWindowTextColor | The color specified in settings for Text. |
-
-## The XAML type ramp
-
-The themeresources.xaml file defines several resources that define a [Style](/uwp/api/Windows.UI.Xaml.Style) that you can apply to text containers in your UI, specifically for either [TextBlock](/uwp/api/Windows.UI.Xaml.Controls.TextBlock) or [RichTextBlock](/uwp/api/Windows.UI.Xaml.Controls.RichTextBlock). These are not the default implicit styles. They are provided to make it easier for you to create XAML UI definitions that match the *Windows type ramp* documented in [Guidelines for fonts](../style/typography.md).
-
-These styles are for text attributes that you want applied to the whole text container. If you want styles applied just to sections of the text, set attributes on the text elements within the container, such as on a [Run](/uwp/api/Windows.UI.Xaml.Documents.Run) in [TextBlock.Inlines](/uwp/api/windows.ui.xaml.controls.textblock.inlines) or on a [Paragraph](/uwp/api/Windows.UI.Xaml.Documents.Paragraph) in [RichTextBlock.Blocks](/uwp/api/windows.ui.xaml.controls.richtextblock.blocks).
-
-The styles look like this when applied to a [TextBlock](/uwp/api/Windows.UI.Xaml.Controls.TextBlock):
-
-
-
-| Style | Weight | Size |
-|------------|---------|------|
-|Caption |Regular | 12|
-|Body |Regular | 14|
-|Body Strong |Semibold | 14|
-|Body Large |Regular | 18|
-|Subtitle |Semibold | 20|
-|Title |Semibold | 28|
-|Title Large |Semibold | 40|
-|Display |Semibold | 68|
-
-```XAML
-
-
-
-
-
-
-
-
-```
-
-For guidance on how to use the Windows type ramp in your app, see [Typography in Windows apps](../style/typography.md).
-
-For details of the XAML styles, see WinUI on GitHub:
- - [Caption TextBlockStyle](https://github.com/microsoft/microsoft-ui-xaml/blob/cb181acede22577c59c5dc250361d3340252f4e9/dev/CommonStyles/TextBlock_themeresources.xaml#L21)
- - [Body TextBlockStyle](https://github.com/microsoft/microsoft-ui-xaml/blob/cb181acede22577c59c5dc250361d3340252f4e9/dev/CommonStyles/TextBlock_themeresources.xaml#L27)
- - [Body Strong TextBlockStyle](https://github.com/microsoft/microsoft-ui-xaml/blob/cb181acede22577c59c5dc250361d3340252f4e9/dev/CommonStyles/TextBlock_themeresources.xaml#L33)
-
- - [Subtitle TextBlockStyle](https://github.com/microsoft/microsoft-ui-xaml/blob/cb181acede22577c59c5dc250361d3340252f4e9/dev/CommonStyles/TextBlock_themeresources.xaml#L37)
- - [Title TextBlockStyle](https://github.com/microsoft/microsoft-ui-xaml/blob/cb181acede22577c59c5dc250361d3340252f4e9/dev/CommonStyles/TextBlock_themeresources.xaml#L42)
- - [Title Large TextBlockStyle](https://github.com/microsoft/microsoft-ui-xaml/blob/cb181acede22577c59c5dc250361d3340252f4e9/dev/CommonStyles/TextBlock_themeresources.xaml#L47)
- - [Display TextBlockStyle](https://github.com/microsoft/microsoft-ui-xaml/blob/cb181acede22577c59c5dc250361d3340252f4e9/dev/CommonStyles/TextBlock_themeresources.xaml#L52)
-
-### BaseRichTextBlockStyle
-
-**TargetType**: [RichTextBlock](/uwp/api/Windows.UI.Xaml.Controls.RichTextBlock)
-
-Supplies the common properties for all the other [RichTextBlock](/uwp/api/Windows.UI.Xaml.Controls.RichTextBlock) container styles.
-
-```XAML
-
-
- Rich text.
-
-
-
-
-```
-
-### BodyRichTextBlockStyle
-
-```XAML
-
-
- Rich text.
-
-
-
-
-```
-
-**Note**: The [RichTextBlock](/uwp/api/Windows.UI.Xaml.Controls.RichTextBlock) styles don't have all the text ramp styles that [TextBlock](/uwp/api/Windows.UI.Xaml.Controls.TextBlock) does, mainly because the block-based document object model for **RichTextBlock** makes it easier to set attributes on the individual text elements. Also, setting [TextBlock.Text](/uwp/api/windows.ui.xaml.controls.textblock.text) using the XAML content property introduces a situation where there is no text element to style and thus you'd have to style the container. That isn't an issue for **RichTextBlock** because its text content always has to be in specific text elements like [Paragraph](/uwp/api/Windows.UI.Xaml.Documents.Paragraph), which is where you might apply XAML styles for page header, page subheader and similar text ramp definitions.
-
-## Miscellaneous Named styles
-
-There's an additional set of keyed [Style](/uwp/api/Windows.UI.Xaml.Style) definitions you can apply to style a [Button](/uwp/api/Windows.UI.Xaml.Controls.Button) differently than its default implicit style.
-
-### NavigationBackButtonNormalStyle
-
-**TargetType**: [Button](/uwp/api/Windows.UI.Xaml.Controls.Button)
-
-This [Style](/uwp/api/Windows.UI.Xaml.Style) provides a complete template for a [Button](/uwp/api/Windows.UI.Xaml.Controls.Button) that can be the navigation back button for a navigation app. The default dimensions are 40 x 40 pixels. To tailor the styling you can either explicitly set the [Height](/uwp/api/Windows.UI.Xaml.FrameworkElement.Height), [Width](/uwp/api/Windows.UI.Xaml.FrameworkElement.Width), [FontSize](/uwp/api/windows.ui.xaml.controls.control.fontsize), and other properties on your **Button** or create a derived style using [BasedOn](/uwp/api/windows.ui.xaml.style.basedon).
-
-Here's a [Button](/uwp/api/Windows.UI.Xaml.Controls.Button) with the **NavigationBackButtonNormalStyle** resource applied to it.
-
-```XAML
-
-```
-
-It looks like this:
-
-
-
-### NavigationBackButtonSmallStyle
-
-**TargetType**: [Button](/uwp/api/Windows.UI.Xaml.Controls.Button)
-
-This [Style](/uwp/api/Windows.UI.Xaml.Style) provides a complete template for a [Button](/uwp/api/Windows.UI.Xaml.Controls.Button) that can be the navigation back button for a navigation app. It's similar to **NavigationBackButtonNormalStyle**, but its dimensions are 30 x 30 pixels.
-
-Here's a [Button](/uwp/api/Windows.UI.Xaml.Controls.Button) with the **NavigationBackButtonSmallStyle** resource applied to it.
-
-```XAML
-
-```
-
-## Troubleshooting theme resources
-
-If you don't follow the [guidelines for using theme resources](#guidelines-for-custom-theme-resources), you might see unexpected behavior related to themes in your app.
-
-For example, when you open a light-themed flyout, parts of your dark-themed app also change as if they were in the light theme. Or if you navigate to a light-themed page and then navigate back, the original dark-themed page (or parts of it) now looks as though it is in the light theme.
-
-Typically, these types of issues occur when you provide a "Default" theme and a "HighContrast" theme to support high-contrast scenarios, and then use both "Light" and "Dark" themes in different parts of your app.
-
-For example, consider this theme dictionary definition:
-
-```XAML
-
-
-
-
-
-
-
-
-
-
-
-```
-
-Intuitively, this looks correct. You want to change the color pointed to by `myBrush` when in high-contrast, but when not in high-contrast, you rely on the [{ThemeResource} markup extension](/windows/uwp/xaml-platform/themeresource-markup-extension) to make sure that `myBrush` points to the right color for your theme. If your app never has [FrameworkElement.RequestedTheme](/uwp/api/windows.ui.xaml.frameworkelement.requestedtheme) set on elements within its visual tree, this will typically work as expected. However, you run into problems in your app as soon as you start to re-theme different parts of your visual tree.
-
-The problem occurs because brushes are shared resources, unlike most other XAML types. If you have 2 elements in XAML sub-trees with different themes that reference the same brush resource, then as the framework walks each sub-tree to update its [{ThemeResource} markup extension](/windows/uwp/xaml-platform/themeresource-markup-extension) expressions, changes to the shared brush resource are reflected in the other sub-tree, which is not your intended result.
-
-To fix this, replace the "Default" dictionary with separate theme dictionaries for both "Light" and "Dark" themes in addition to "HighContrast":
-
-```XAML
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-```
-
-However, problems still occur if any of these resources are referenced in inherited properties like [Foreground](/uwp/api/windows.ui.xaml.controls.control.foreground). Your custom control template might specify the foreground color of an element using the [{ThemeResource} markup extension](/windows/uwp/xaml-platform/themeresource-markup-extension), but when the framework propagates the inherited value to child elements, it provides a direct reference to the resource that was resolved by the {ThemeResource} markup extension expression. This causes problems when the framework processes theme changes as it walks your control's visual tree. It re-evaluates the {ThemeResource} markup extension expression to get a new brush resource but doesn't yet propagate this reference down to the children of your control; this happens later, such as during the next measure pass.
-
-As a result, after walking the control visual tree in response to a theme change, the framework walks the children and updates any [{ThemeResource} markup extension](/windows/uwp/xaml-platform/themeresource-markup-extension) expressions set on them, or on objects set on their properties. This is where the problem occurs; the framework walks the brush resource and because it specifies its color using a {ThemeResource} markup extension, it's re-evaluated.
-
-At this point, the framework appears to have polluted your theme dictionary because it now has a resource from one dictionary that has its color set from another dictionary.
-
-To fix this problem, use the [{StaticResource} markup extension](/windows/uwp/xaml-platform/staticresource-markup-extension) instead of [{ThemeResource} markup extension](/windows/uwp/xaml-platform/themeresource-markup-extension). With the guidelines applied, the theme dictionaries look like this:
-
-```XAML
-
-
-
-
-
-
-
-
-
-
-
-
-
-```
-
-Notice that the [{ThemeResource} markup extension](/windows/uwp/xaml-platform/themeresource-markup-extension) is still used in the "HighContrast" dictionary instead of [{StaticResource} markup extension](/windows/uwp/xaml-platform/staticresource-markup-extension). This situation falls under the exception given earlier in the guidelines. Most of the brush values that are used for the "HighContrast" theme are using color choices that are globally controlled by the system, but exposed to XAML as a specially-named resource (those prefixed with 'SystemColor' in the name). The system enables the user to set the specific colors that should be used for their contrast theme settings through the Ease of Access Center. Those color choices are applied to the specially-named resources. The XAML framework uses the same theme changed event to also update these brushes when it detects they've changed at the system level. This is why the {ThemeResource} markup extension is used here.
diff --git a/hub/apps/design/toc.yml b/hub/apps/design/toc.yml
index 6c56dede85..b5b5dcf080 100644
--- a/hub/apps/design/toc.yml
+++ b/hub/apps/design/toc.yml
@@ -1,687 +1,215 @@
-- name: Overview
- href: index.md
-- name: Design in Windows 11
- items:
- - name: Windows 11 design principles
- href: signature-experiences/design-principles.md
- - name: Windows 11 signature experiences
- href: signature-experiences/signature-experiences.md
- - name: Geometry
- href: signature-experiences/geometry.md
+items:
+ - name: Build Windows apps
+ href: ../desktop/index.yml
+ - name: Design overview
+ href: index.md
+ - name: Design principles
+ href: design-principles.md
+ - name: Guidelines
+ expanded: true
+ items:
+ - name: Overview
+ href: guidelines-overview.md
- name: Color
href: signature-experiences/color.md
- - name: Layering and elevation
- href: signature-experiences/layering.md
- - name: Materials
- href: signature-experiences/materials.md
- - name: Iconography
- href: signature-experiences/iconography.md
- - name: Typography
- href: signature-experiences/typography.md
- - name: Motion
- href: signature-experiences/motion.md
-- name: Design basics
- items:
- - name: Overview
- href: basics/index.md
- - name: App Silhouette
- href: basics/app-silhouette.md
- - name: App title bar
- href: basics/titlebar-design.md
- - name: Content basics
- href: basics/content-basics.md
- - name: Commanding Basics
+ - name: Commanding
href: basics/commanding-basics.md
- - name: Navigation basics
- items:
- - name: Overview
- href: basics/navigation-basics.md
- - name: Implement basic navigation
- href: basics/navigate-between-two-pages.md
- - name: Navigation history and backwards navigation
- href: basics/navigation-history-and-backwards-navigation.md
-
-- name: Layout
- items:
- - name: Overview
- href: layout/index.md
- - name: Screen sizes and breakpoints
- href: layout/screen-sizes-and-breakpoints-for-responsive-design.md
- - name: Responsive design techniques
- href: layout/responsive-design.md
- - name: Layouts with XAML
- href: layout/layouts-with-xaml.md
- - name: Show multiple views
- items:
- - name: Show multiple views
- href: layout/show-multiple-views.md
- - name: Use AppWindow
- href: layout/app-window.md
- - name: Use ApplicationView
- href: layout/application-view.md
- - name: Alignment, margin, and padding
- href: layout/alignment-margin-padding.md
- - name: Panels
+ - name: Elevation
items:
- name: Overview
- href: layout/layout-panels.md
- - name: "Tutorial: Use layout panels"
- href: layout/grid-tutorial.md
- - name: Split view
- href: controls/split-view.md
- - name: Custom panels
- href: layout/custom-panels-overview.md
- - name: "Custom panel example: BoxPanel"
- href: layout/boxpanel-example-custom-panel.md
- - name: Attached Layout
- href: layout/attached-layouts.md
- - name: Transforms
+ href: signature-experiences/layering.md
+ - name: Z-depth and shadow
+ href: layout/depth-shadow.md
+ - name: Geometry
items:
- name: Overview
- href: layout/transforms.md
- - name: 3-D perspective effects
- href: layout/3-d-perspective-effects.md
- - name: Z-depth and shadow
- href: layout/depth-shadow.md
-- name: Controls
- items:
- - name: Overview
- href: controls/index.md
- - name: Intro to controls and events
- href: controls/controls-and-events-intro.md
- - name: Commanding in Windows apps using StandardUICommand, XamlUICommand, and ICommand
- href: controls/commanding.md
- - name: Basic input
- items:
- - name: Buttons
- href: controls/buttons.md
- - name: Check boxes
- href: controls/checkbox.md
- - name: Combo boxes and list boxes
- href: controls/combo-box.md
- - name: Hyperlinks
- href: controls/hyperlinks.md
- - name: Radio buttons
- href: controls/radio-button.md
- - name: Rating control
- href: controls/rating.md
- - name: Sliders
- href: controls/slider.md
- - name: Toggle switches
- href: controls/toggles.md
- - name: Collections
+ href: signature-experiences/geometry.md
+ - name: Corner radius
+ href: style/rounded-corner.md
+ - name: Iconography
items:
- name: Overview
- href: controls/lists.md
- - name: List view and grid view
- href: controls/listview-and-gridview.md
- - name: Flip view
- href: controls/flipview.md
- - name: PipsPager
- href: controls/pipspager.md
- - name: Tree view
- href: controls/tree-view.md
- - name: ItemsRepeater
- href: controls/items-repeater.md
- - name: Item containers and templates
- items:
- - name: Item containers and templates
- href: controls/item-containers-templates.md
- - name: Data template selection
- href: controls/data-template-selector.md
- - name: Item templates for list view
- href: controls/item-templates-listview.md
- - name: Item templates for grid view
- href: controls/item-templates-gridview.md
- - name: Selection and interaction
+ href: signature-experiences/iconography.md
+ - name: App icons
items:
- - name: Collection commanding
- href: controls/collection-commanding.md
- - name: Selection mode overview
- href: controls/selection-modes.md
- - name: Swipe
- href: controls/swipe.md
- - name: Pull-to-refresh
- href: controls/pull-to-refresh.md
- - name: Filtering collections
- href: controls/listview-filtering.md
- - name: Additional collection options and customizations
- items:
- - name: Inverted lists
- href: controls/inverted-lists.md
- - name: Nested UI
- href: controls/nested-ui.md
- - name: Dialogs and flyouts
+ - name: Overview
+ href: style/iconography/overview.md
+ - name: Design guidelines
+ href: style/iconography/app-icon-design.md
+ - name: Construct your app icon
+ href: style/iconography/app-icon-construction.md
+ - name: Construction guidelines for Windows 10 icons
+ href: style/iconography/live-tile-icons.md
+ - name: Generate app icons using Visual Studio
+ href: style/iconography/visual-studio-asset-generation.md
+ - name: Segoe MDL2 icons
+ href: style/segoe-ui-symbol-font.md
+ - name: Segoe Fluent Icons
+ href: style/segoe-fluent-icons-font.md
+ - name: Layout
items:
- name: Overview
- href: controls/dialogs-and-flyouts/index.md
- - name: Dialogs
- href: controls/dialogs-and-flyouts/dialogs.md
- - name: Flyouts
- href: controls/dialogs-and-flyouts/flyouts.md
- - name: Teaching tip
- href: controls/dialogs-and-flyouts/teaching-tip.md
- - name: Forms
- href: controls/forms.md
- - name: Media, graphics, and shapes
- items:
- - name: Animated icons
- href: controls/animated-icon.md
- - name: Images and image brushes
- href: controls/images-imagebrushes.md
- - name: Ink
- href: controls/inking-controls.md
- - name: Media playback
- href: controls/media-playback.md
- - name: Custom transport controls
- href: controls/custom-transport-controls.md
- - name: Shapes
- href: controls/shapes.md
- - name: Web view
- href: controls/web-view.md
- - name: Menus and toolbars
- items:
- - name: Menus and context menus
- href: controls/menus-and-context-menus.md
- - name: Command bar
- href: controls/command-bar.md
- - name: Command bar flyout
- href: controls/command-bar-flyout.md
- - name: Menu flyout and menu bar
- href: controls/menus.md
- - name: Navigation
- items:
- - name: Breadcrumb bar
- href: controls/breadcrumbbar.md
- - name: List/details
- href: controls/list-details.md
- - name: Navigation view
- href: controls/navigationview.md
- - name: Pivot
- href: controls/pivot.md
- - name: Tab view
- href: controls/tab-view.md
- - name: People
- items:
- - name: Contact card
- href: controls/contact-card.md
- - name: Person picture
- href: controls/person-picture.md
- - name: Pickers
- items:
- - name: Color picker
- href: controls/color-picker.md
- - name: Date and time controls
- href: controls/date-and-time.md
- - name: Calendar date picker
- href: controls/calendar-date-picker.md
- - name: Calendar view
- href: controls/calendar-view.md
- - name: Date picker
- href: controls/date-picker.md
- - name: Time picker
- href: controls/time-picker.md
- - name: Scrolling and layout
- items:
- - name: Expander
- href: controls/expander.md
- - name: Scrolling and panning controls
- href: controls/scroll-controls.md
- - name: Semantic zoom
- href: controls/semantic-zoom.md
- - name: Two-pane view
- href: controls/two-pane-view.md
- - name: Status and information
- items:
- - name: Progress
- href: controls/progress-controls.md
- - name: Tooltip
- href: controls/tooltips.md
- - name: Info bar
- href: controls/infobar.md
- - name: Info badge
- href: controls/info-badge.md
- - name: Text
+ href: layout/index.md
+ - name: App Silhouette
+ href: basics/app-silhouette.md
+ - name: App title bar
+ href: basics/titlebar-design.md
+ - name: Hierarchy
+ href: basics/content-basics.md
+ - name: Spacing
+ href: style/spacing.md
+ - name: Screen sizes and breakpoints
+ href: layout/screen-sizes-and-breakpoints-for-responsive-design.md
+ - name: Responsive design techniques
+ href: layout/responsive-design.md
+ - name: Alignment, margin, and padding
+ href: layout/alignment-margin-padding.md
+ - name: Layouts with XAML
+ href: layout/layouts-with-xaml.md
+ - name: Layout panels
+ href: layout/layout-panels.md
+ - name: Materials
items:
- name: Overview
- href: controls/text-controls.md
- - name: Auto-suggest box
- href: controls/auto-suggest-box.md
- - name: Text block
- href: controls/text-block.md
- - name: Rich text block
- href: controls/rich-text-block.md
- - name: Text box
- href: controls/text-box.md
- - name: Rich edit box
- href: controls/rich-edit-box.md
- - name: Password box
- href: controls/password-box.md
- - name: Number box
- href: controls/number-box.md
- - name: Labels
- href: controls/labels.md
- - name: Content links
- href: controls/content-links.md
- - name: Handwriting view
- href: controls/text-handwriting-view.md
-- name: Style
- items:
- - name: Overview
- href: style/index.md
- - name: Color
- href: style/color.md
- - name: Typography
- href: style/typography.md
- - name: Icons
+ href: signature-experiences/materials.md
+ - name: Acrylic
+ href: style/acrylic.md
+ - name: Mica
+ href: style/mica.md
+ - name: Motion
items:
- name: Overview
- href: style/iconography/overview.md
- - name: Design guidelines for Windows app icons
- href: style/iconography/app-icon-design.md
- - name: Construct your Windows app's icon
- href: style/iconography/app-icon-construction.md
- - name: Construction guidelines for Windows 10 icons
- href: style/iconography/live-tile-icons.md
- - name: Create icons using Visual Studio's asset generation tool
- href: style/iconography/visual-studio-asset-generation.md
- - name: Segoe MDL2 icons
- href: style/segoe-ui-symbol-font.md
- - name: Segoe Fluent Icons
- href: style/segoe-fluent-icons-font.md
- - name: Acrylic
- href: style/acrylic.md
- - name: Mica
- href: style/mica.md
- - name: Reveal focus
- href: style/reveal-focus.md
+ href: signature-experiences/motion.md
+ - name: Timing and easing
+ href: motion/timing-and-easing.md
+ - name: Directionality and gravity
+ href: motion/directionality-and-gravity.md
+ - name: Motion in practice
+ href: motion/motion-in-practice.md
+ - name: Page transitions
+ href: motion/page-transitions.md
+ - name: Connected animation
+ href: motion/connected-animation.md
+ - name: Parallax
+ href: motion/parallax.md
+ - name: Animations in XAML
+ href: motion/xaml-animation.md
+ items:
+ - name: Property animations
+ href: motion/xaml-property-animations.md
+ - name: Storyboarded animations
+ href: motion/storyboarded-animations.md
+ - name: Key-frame and easing function animations
+ href: motion/key-frame-and-easing-function-animations.md
+ - name: Navigation
+ items:
+ - name: Overview
+ href: basics/navigation-basics.md
+ - name: Implement basic navigation
+ href: basics/navigate-between-two-pages.md
+ - name: Navigation history and backwards navigation
+ href: basics/navigation-history-and-backwards-navigation.md
- name: Sound
href: style/sound.md
- - name: Writing style
- href: style/writing-style.md
- - name: XAML brushes
- href: style/brushes.md
- - name: XAML styles
- href: style/xaml-styles.md
- items:
- - name: XAML Control templates
- href: style/xaml-control-templates.md
- - name: ResourceDictionary and XAML resource references
- href: style/xaml-resource-dictionary.md
- - name: XAML theme resources
- href: style/xaml-theme-resources.md
- - name: Spacing
- href: style/spacing.md
- - name: Corner radius
- href: style/rounded-corner.md
-- name: Motion
- items:
- - name: Overview
- href: motion/index.md
- - name: Timing and easing
- href: motion/timing-and-easing.md
- - name: Directionality and gravity
- href: motion/directionality-and-gravity.md
- - name: Motion in practice
- href: motion/motion-in-practice.md
- - name: Page transitions
- href: motion/page-transitions.md
- - name: Connected animation
- href: motion/connected-animation.md
- - name: Parallax
- href: motion/parallax.md
- - name: Animations in XAML
- href: motion/xaml-animation.md
- items:
- - name: Property animations
- href: motion/xaml-property-animations.md
- - name: Storyboarded animations
- href: motion/storyboarded-animations.md
- - name: Key-frame and easing function animations
- href: motion/key-frame-and-easing-function-animations.md
-- name: Shell
- items:
- - name: Overview
- href: shell/index.md
- - name: Toast notifications
+ - name: Typography
+ href: signature-experiences/typography.md
+ - name: Usability
items:
- name: Overview
- href: shell/tiles-and-notifications/toast-notifications-overview.md
- - name: UX guidance
- href: shell/tiles-and-notifications/toast-ux-guidance.md
- - name: Send local toast
+ href: usability/index.md
+ - name: Accessibility
+ href: accessibility/accessibility.md
items:
- - name: C# apps
- href: shell/tiles-and-notifications/send-local-toast.md
- - name: C++ UWP apps
- href: shell/tiles-and-notifications/send-local-toast-cpp-uwp.md
- - name: C++ WRL apps
- href: shell/tiles-and-notifications/send-local-toast-desktop-cpp-wrl.md
- - name: Other apps
- href: shell/tiles-and-notifications/send-local-toast-other-apps.md
- - name: Activating toast notifications from desktop apps
- href: shell/tiles-and-notifications/toast-desktop-apps.md
- - name: Toast content
+ - name: Overview
+ href: accessibility/accessibility-overview.md
+ - name: Designing inclusive software
+ href: accessibility/designing-inclusive-software.md
+ - name: Developing inclusive Windows apps
+ href: accessibility/developing-inclusive-windows-apps.md
+ - name: Accessibility testing
+ href: accessibility/accessibility-testing.md
+ - name: Accessibility in the Store
+ href: accessibility/accessibility-in-the-store.md
+ - name: Accessibility checklist
+ href: accessibility/accessibility-checklist.md
+ - name: Expose basic accessibility information
+ href: accessibility/basic-accessibility-information.md
+ - name: Keyboard accessibility
+ href: accessibility/keyboard-accessibility.md
+ - name: Screen readers and hardware system buttons
+ href: accessibility/system-button-narration.md
+ - name: Landmarks and Headings
+ href: accessibility/landmarks-and-headings.md
+ - name: High-contrast themes
+ href: accessibility/high-contrast-themes.md
+ - name: Accessible text requirements
+ href: accessibility/accessible-text-requirements.md
+ - name: Accessibility practices to avoid
+ href: accessibility/practices-to-avoid.md
+ - name: Custom automation peers
+ href: accessibility/custom-automation-peers.md
+ - name: Control patterns and interfaces
+ href: accessibility/control-patterns-and-interfaces.md
+ - name: App settings
items:
- - name: Content
- href: shell/tiles-and-notifications/adaptive-interactive-toasts.md
- - name: Schema
- href: shell/tiles-and-notifications/toast-schema.md
- - name: Schedule toasts
- href: shell/tiles-and-notifications/scheduled-toast.md
- - name: Additional features
+ - name: Guidelines for app settings
+ href: app-settings/guidelines-for-app-settings.md
+ - name: Store and retrieve app settings and data
+ href: app-settings/store-and-retrieve-app-data.md
+ - name: Globalization and localization
+ href: globalizing/globalizing-portal.md
items:
- - name: Custom audio
- href: shell/tiles-and-notifications/custom-audio-on-toasts.md
- - name: Progress bar
- href: shell/tiles-and-notifications/toast-progress-bar.md
- - name: Pending update
- href: shell/tiles-and-notifications/toast-pending-update.md
- - name: Custom timestamps
- href: shell/tiles-and-notifications/custom-timestamps-on-toasts.md
- - name: Collections
- href: shell/tiles-and-notifications/toast-collections.md
- - name: Headers
- href: shell/tiles-and-notifications/toast-headers.md
- - name: Notification Listener
- href: shell/tiles-and-notifications/notification-listener.md
- - name: Obsolete
+ - name: Guidelines for globalization
+ href: globalizing/guidelines-and-checklist-for-globalizing-your-app.md
+ - name: Understand user profile and app manifest languages
+ href: globalizing/manage-language-and-region.md
+ - name: Globalize your date/time/number formats
+ href: globalizing/use-global-ready-formats.md
+ - name: Use templates and patterns to format dates and times
+ href: globalizing/use-patterns-to-format-dates-and-times.md
+ - name: Adjust layout and fonts, and support RTL
+ href: globalizing/adjust-layout-and-fonts--and-support-rtl.md
+ - name: NumeralSystem values
+ href: globalizing/glob-numeralsystem-values.md
+ - name: Make your app localizable
+ href: globalizing/prepare-your-app-for-localization.md
+ - name: International fonts
+ href: globalizing/loc-international-fonts.md
+ - name: Design your app for bidirectional text
+ href: globalizing/design-for-bidi-text.md
+ - name: Use UTF-8 code pages in Windows apps
+ href: globalizing/use-utf8-code-page.md
+ - name: Prepare your application for the Japanese era change
+ href: globalizing/japanese-era-change.md
+ - name: Multilingual App Toolkit
items:
- - name: Notification mirroring
- href: shell/tiles-and-notifications/notification-mirroring.md
- - name: Universal Dismiss
- href: shell/tiles-and-notifications/universal-dismiss.md
- - name: Badge notifications
- href: shell/tiles-and-notifications/badges.md
- - name: Push notifications
- items:
- - name: Overview
- href: shell/tiles-and-notifications/windows-push-notification-services--wns--overview.md
- - name: Quickstart Sending a push notification (XAML)
- href: shell/tiles-and-notifications/quickstart-send-push-notification.md
- - name: WNS Priorities
- href: shell/tiles-and-notifications/wns-notification-priorities.md
- - name: Allowlisting WNS Traffic
- href: shell/tiles-and-notifications/firewall-allowlist-config.md
- - name: Code generated by the push notification wizard
- href: shell/tiles-and-notifications/the-code-generated-by-the-push-notification-wizard.md
- - name: How to request, create, and save a notification channel
- href: shell/tiles-and-notifications/request-create-save-notification-channel.md
- - name: Push notification service request and response headers
- href: shell/tiles-and-notifications/push-request-response-headers.md
- - name: Troubleshooting push notifications
- href: shell/tiles-and-notifications/troubleshoot-notifications.md
- - name: Raw Notification Overview
- href: shell/tiles-and-notifications/raw-notification-overview.md
- - name: Taskbar
- items:
- - name: Pin your app to the taskbar
- href: shell/pin-to-taskbar.md
- - name: Live Tiles
- href: shell/tiles-and-notifications/creating-tiles.md
- items:
- - name: Secondary tiles
- href: shell/tiles-and-notifications/secondary-tiles.md
- items:
- - name: Guidance
- href: shell/tiles-and-notifications/secondary-tiles-guidance.md
- - name: Pin to Start
- href: shell/tiles-and-notifications/secondary-tiles-pinning.md
- - name: Pin to taskbar
- href: shell/tiles-and-notifications/secondary-tiles-pin-to-taskbar.md
- - name: Desktop applications
- href: shell/tiles-and-notifications/secondary-tiles-desktop-pinning.md
- - name: Tile content
- href: shell/tiles-and-notifications/create-adaptive-tiles.md
- - name: Tile content schema
- href: shell/tiles-and-notifications/tile-schema.md
- - name: Special tile templates
- href: shell/tiles-and-notifications/special-tile-templates-catalog.md
- - name: Send local tile notification
- href: shell/tiles-and-notifications/sending-a-local-tile-notification.md
- - name: Chaseable tile notifications
- href: shell/tiles-and-notifications/chaseable-tile-notifications.md
- - name: Primary tile APIs
- href: shell/tiles-and-notifications/primary-tile-apis.md
- - name: Tile, toast notification support for language, scale, contrast
- href: shell/tiles-and-notifications/tile-toast-language-scale-contrast.md
- - name: Misc
- items:
- - name: Notifications Visualizer
- href: shell/tiles-and-notifications/notifications-visualizer.md
- - name: Notification delivery methods
- href: shell/tiles-and-notifications/choosing-a-notification-delivery-method.md
+ - name: Announcements
+ href: globalizing/mat-announcements.md
+ - name: In-app help
items:
- - name: Notification channel types
- href: shell/tiles-and-notifications/channel-types.md
- - name: Periodic notifications
- href: shell/tiles-and-notifications/periodic-notification-overview.md
-- name: Input and interactions
- items:
- - name: Overview
- href: input/index.md
- - name: Input primer
- href: input/input-primer.md
- - name: Pointer input
- href: input/handle-pointer-input.md
- - name: Gaze
- href: input/gaze-interactions.md
- - name: Pen and Windows Ink
- href: input/pen-and-stylus-interactions.md
- items:
- - name: "Pen interactions and haptic (tactile) feedback"
- href: input/pen-haptics.md
- - name: "Tutorial: Add Inking support to your app"
- href: input/ink-walkthrough.md
- - name: Recognize ink strokes
- href: input/convert-ink-to-text.md
- - name: Store and retrieve ink strokes
- href: input/save-and-load-ink.md
- - name: Add an InkToolbar
- href: input/ink-toolbar.md
- - name: Touch
- href: input/touch-interactions.md
- - name: Mouse
- href: input/mouse-interactions.md
- - name: Keyboard
- href: input/keyboard-interactions.md
- items:
- - name: Access keys
- href: input/access-keys.md
- - name: Keyboard Accelerators
- href: input/keyboard-accelerators.md
- - name: Keyboard events
- href: input/keyboard-events.md
- - name: Focus navigation with keyboard, gamepad, remote control, and accessibility tools
- href: input/focus-navigation.md
- - name: Programmatic focus navigation
- href: input/focus-navigation-programmatic.md
- - name: Respond to the presence of the touch keyboard
- href: input/respond-to-the-presence-of-the-touch-keyboard.md
- - name: Use input scope to change the touch keyboard
- href: input/use-input-scope-to-change-the-touch-keyboard.md
- - name: Text input
- items:
- - name: Custom text input
- href: input/custom-text-input.md
- - name: Text scaling
- href: input/text-scaling.md
- - name: Selecting text and images
- href: input/guidelines-for-textselection.md
- - name: Input Method Editors
- href: input/input-method-editors.md
- - name: Input Method Editor requirements
- href: input/input-method-editor-requirements.md
- - name: Gamepad and remote control
- href: input/gamepad-and-remote-interactions.md
- - name: Touchpad
- href: input/touchpad-interactions.md
- - name: Surface Dial
- href: input/windows-wheel-interactions.md
- items:
- - name: "Tutorial: Add Surface Dial support to your app"
- href: input/radialcontroller-walkthrough.md
- - name: Speech interactions
- href: input/speech-interactions.md
- items:
- - name: Speech recognition
- href: input/speech-recognition.md
- - name: Specify the speech recognizer language
- href: input/specify-the-speech-recognizer-language.md
- - name: Define custom recognition constraints
- href: input/define-custom-recognition-constraints.md
- - name: Continuous dictation
- href: input/enable-continuous-dictation.md
- - name: Audio input issues
- href: input/manage-issues-with-audio-input.md
- - name: Speech recognition timeouts
- href: input/set-speech-recognition-timeouts.md
- - name: Cortana
- href: input/cortana-interactions.md
- items:
- - name: Design guidelines
- href: input/cortana-design-guidelines.md
- - name: Activate a foreground app
- href: input/cortana-launch-a-foreground-app-with-voice-commands.md
- - name: Modify VCD phrase lists
- href: input/cortana-dynamically-modify-voice-command-definition-vcd-phrase-lists.md
- - name: Launch a background app
- href: input/cortana-launch-a-background-app-with-voice-commands.md
- - name: Interact with a background app
- href: input/cortana-interact-with-a-background-app.md
- - name: Deep link from a background app
- href: input/cortana-deep-link-into-your-app.md
- - name: Support natural-language voice commands
- href: input/cortana-support-natural-language-voice-commands.md
- - name: Multiple inputs
- href: input/multiple-input-design-guidelines.md
- - name: Input injection
- href: input/input-injection.md
- - name: Identify input devices
- href: input/identify-input-devices.md
- - name: Drag and drop
- href: input/drag-and-drop.md
- - name: Optical zoom and resizing
- href: input/guidelines-for-optical-zoom.md
- - name: Panning
- href: input/guidelines-for-panning.md
- - name: Rotation
- href: input/guidelines-for-rotation.md
- - name: Targeting
- href: input/guidelines-for-targeting.md
- - name: Visual feedback
- href: input/guidelines-for-visualfeedback.md
-- name: Devices
- items:
- - name: Overview
- href: devices/index.md
- - name: Kinect for Windows
- href: devices/kinect-for-windows.md
- - name: Designing for Xbox and TV
- href: devices/designing-for-tv.md
- - name: Mixed Reality
- href: devices/designing-for-MR.md
-- name: Usability
- items:
- - name: Overview
- href: usability/index.md
- - name: Accessibility
- href: accessibility/accessibility.md
+ - name: Guidelines for app help
+ href: in-app-help/guidelines-for-app-help.md
+ - name: Instructional UI
+ href: in-app-help/instructional-ui.md
+ - name: In-app help
+ href: in-app-help/in-app-help.md
+ - name: External help
+ href: in-app-help/external-help.md
+ - name: Widgets
items:
- name: Overview
- href: accessibility/accessibility-overview.md
- - name: Designing inclusive software
- href: accessibility/designing-inclusive-software.md
- - name: Developing inclusive Windows apps
- href: accessibility/developing-inclusive-windows-apps.md
- - name: Accessibility testing
- href: accessibility/accessibility-testing.md
- - name: Accessibility in the Store
- href: accessibility/accessibility-in-the-store.md
- - name: Accessibility checklist
- href: accessibility/accessibility-checklist.md
- - name: Expose basic accessibility information
- href: accessibility/basic-accessibility-information.md
- - name: Keyboard accessibility
- href: accessibility/keyboard-accessibility.md
- - name: Screen readers and hardware system buttons
- href: accessibility/system-button-narration.md
- - name: Landmarks and Headings
- href: accessibility/landmarks-and-headings.md
- - name: High-contrast themes
- href: accessibility/high-contrast-themes.md
- - name: Accessible text requirements
- href: accessibility/accessible-text-requirements.md
- - name: Accessibility practices to avoid
- href: accessibility/practices-to-avoid.md
- - name: Custom automation peers
- href: accessibility/custom-automation-peers.md
- - name: Control patterns and interfaces
- href: accessibility/control-patterns-and-interfaces.md
- - name: App settings
- items:
- - name: Guidelines for app settings
- href: app-settings/guidelines-for-app-settings.md
- - name: Store and retrieve app settings and data
- href: app-settings/store-and-retrieve-app-data.md
- - name: Globalization and localization
- href: globalizing/globalizing-portal.md
- items:
- - name: Guidelines for globalization
- href: globalizing/guidelines-and-checklist-for-globalizing-your-app.md
- - name: Understand user profile and app manifest languages
- href: globalizing/manage-language-and-region.md
- - name: Globalize your date/time/number formats
- href: globalizing/use-global-ready-formats.md
- - name: Use templates and patterns to format dates and times
- href: globalizing/use-patterns-to-format-dates-and-times.md
- - name: Adjust layout and fonts, and support RTL
- href: globalizing/adjust-layout-and-fonts--and-support-rtl.md
- - name: NumeralSystem values
- href: globalizing/glob-numeralsystem-values.md
- - name: Make your app localizable
- href: globalizing/prepare-your-app-for-localization.md
- - name: International fonts
- href: globalizing/loc-international-fonts.md
- - name: Design your app for bidirectional text
- href: globalizing/design-for-bidi-text.md
- - name: Use UTF-8 code pages in Windows apps
- href: globalizing/use-utf8-code-page.md
- - name: Prepare your application for the Japanese era change
- href: globalizing/japanese-era-change.md
- - name: Multilingual App Toolkit
- items:
- - name: Announcements
- href: globalizing/mat-announcements.md
- - name: Use the Multilingual App Toolkit
- href: globalizing/use-mat.md
- - name: Multilingual App Toolkit Editor
- href: globalizing/multilingual-app-toolkit-editor-downloads.md
- - name: Multilingual App Toolkit FAQ & troubleshooting
- href: globalizing/mat-faq-troubleshooting.yml
- - name: In-app help
- items:
- - name: Guidelines for app help
- href: in-app-help/guidelines-for-app-help.md
- - name: Instructional UI
- href: in-app-help/instructional-ui.md
- - name: In-app help
- href: in-app-help/in-app-help.md
- - name: External help
- href: in-app-help/external-help.md
-- name: Windows widgets
- items:
- - name: Overview
- href: widgets/index.md
- - name: Widgets design fundamentals
- href: widgets/widgets-design-fundamentals.md
- - name: Widget states and built-in UI components
- href: widgets/widgets-states-and-ui.md
- - name: Widget interaction design guidance
- href: widgets/widgets-interaction-design.md
- - name: Create a widget template with the Adaptive Card Designer
- href: widgets/widgets-create-a-template.md
- - name: Integrate with the widget picker
- href: widgets/widgets-picker-integration.md
-- name: Design toolkits and samples for Windows apps
- href: downloads/index.md
\ No newline at end of file
+ href: widgets/index.md
+ - name: Design fundamentals
+ href: widgets/widgets-design-fundamentals.md
+ - name: States and built-in UI components
+ href: widgets/widgets-states-and-ui.md
+ - name: Interaction design guidance
+ href: widgets/widgets-interaction-design.md
+ - name: Create a template with the Adaptive Card Designer
+ href: widgets/widgets-create-a-template.md
+ - name: Integrate with the widget picker
+ href: widgets/widgets-picker-integration.md
+ - name: Writing
+ href: style/writing-style.md
+ - name: Tools and resources
+ href: downloads/index.md
\ No newline at end of file
diff --git a/hub/apps/design/widgets/index.md b/hub/apps/design/widgets/index.md
index 3d6752b8d8..a5a4e81e52 100644
--- a/hub/apps/design/widgets/index.md
+++ b/hub/apps/design/widgets/index.md
@@ -1,8 +1,6 @@
---
-author: drewbatgit
description: Learn how to support your app with Windows widgets, displayed on the widgets board built into Windows 11.
title: Windows Widgets
-ms.author: drewbat
ms.date: 07/19/2022
ms.topic: article
keywords: windows 11, widgets
@@ -66,7 +64,7 @@ Content should dynamically refresh based on available context. It is up to date
1. Based on your understanding of your customers, identify the most important content or most useful actions that your users would love to have quick access to without opening your app or website. Consider the principles enumerated in the [Widget principles](#widget-principles) section and think about how they can apply to your app.
1. Your app can support multiple individual widgets. Determine the number of separate widgets you want to support so that each widget focuses on a specific purpose.
1. Determine the content you want to include for each widget. A single widget can support three different sizes; small, medium, and large. For each widget, think about what content would bring the most value to users and your business needs. For each size from small to large, the purpose of the widget should remain the same, but the amount of information displayed should expand with larger sizes. We recommend that widget providers implement all widget sizes to give users flexibility when customizing the widget layout.
-1. Think about the user interactions your widget will support. Users can click on the widget title or any click targets that you’ve defined on the widget. These interactions can activate deep-link shortcuts into your app or web site that take users directly to what they're interested in, so that they don’t have to navigate from the root of your app. Consider the different navigational models offered.
+1. Think about the user interactions your widget will support. Users can click on the widget title or any click targets that you've defined on the widget. These interactions can activate deep-link shortcuts into your app or web site that take users directly to what they're interested in, so that they don't have to navigate from the root of your app. Consider the different navigational models offered.
1. Apps must implement a widget provider that implements the back-end functionality to send your widget's layout and data to the widgets board to be displayed. Currently you can implement a widget provider using a packaged Win32 desktop app or a Progressive Web App (PWA). For more information on creating a Win32 widget provider, see [Widget service providers](../../develop/widgets/widget-providers.md). For information on PWA widget providers, see [Build PWA-driven widgets](/microsoft-edge/progressive-web-apps-chromium/how-to/widgets).
diff --git a/hub/apps/design/widgets/widgets-create-a-template.md b/hub/apps/design/widgets/widgets-create-a-template.md
index 6960c91474..f1cb001dea 100644
--- a/hub/apps/design/widgets/widgets-create-a-template.md
+++ b/hub/apps/design/widgets/widgets-create-a-template.md
@@ -1,10 +1,8 @@
---
-author: drewbatgit
description: This article walks you through the creation of a widget template using the Adaptive Cards Designer.
title: Create a widget template with the Adaptive Cards Designer
-ms.author: drewbat
ms.date: 01/19/2022
-ms.topic: article
+ms.topic: how-to
keywords: windows 11, widgets
ms.localizationpriority: medium
---
@@ -34,7 +32,20 @@ At the top of the page, from the **Select host app** dropdown, choose Widgets Bo
There are three text editors at the bottom of the page. The one labeled **Card Payload Editor** contains the JSON definition of your widget's UI. The editor labeled **Sample Data Editor** contains JSON that defines an optional data context for your widget. The data context is bound dynamically to the Adaptive Card when the widget is rendered. For more information about data binding in Adaptive Cards, see [Adaptive Cards Template Language](/adaptive-cards/templating/language).
-The third text editor is labeled **Sample Host Data Editor**. Note that this editor may collapse below the page's other two editors. If so, click the + to expand the editor. Widget host apps such as the Widgets Board have two properties that indicate the size and theme of your widget. These properties are named *host.widgetSize* and *host.hostTheme*. The supported sizes are "small", "medium", and "large". The supported themes are "light" and "dark". Your widget template can dynamically display different content based on the current value of these properties. To see how your widget responds to changes in size and theme, you can adjust the values for these properties in the editor, or you can also set these values in the **Container size** and **Theme** dropdowns next to the **Select host app** dropdown at the top of the page.
+The third text editor is labeled **Sample Host Data Editor**. Note that this editor may collapse below the page's other two editors. If so, click the + to expand the editor. Widget host apps can specify host properties that you can use in your widget template to dynamically display different content based on the current property values. The Widgets Board supports the following host properties.
+
+| Property | Value | Description |
+|----------|-------|-------------|
+| host.widgetSize | "small", "medium", or "large" | The size of the pinned widget. |
+| host.hostTheme | "light" or "dark" | The current theme of the device on which the Widgets Board is displayed. |
+| host.isSettingsPayload | true or false | When this value is true, the user has clicked on the **Customize widget** button in the widget context menu. You can use this property value to display customization settings UI elements. This is an alternative method to using [IWidgetProvider2.OnCustomizationRequested](/windows/windows-app-sdk/api/winrt/microsoft.windows.widgets.providers.iwidgetprovider2.oncustomizationrequested) to alter the JSON payload in the widget provider app. For more information, see [Implementing widget customization](/windows/apps/develop/widgets/implement-widget-provider-cs#implementing-widget-customization). |
+| host.isHeaderSupported | true or false | When this value is true, header customization is supported. For more information, see [isHeaderSupported](/windows/apps/develop/widgets/widget-header-customization). |
+| host.isHeader | true or false | When this value is true, the host is requesting a payload specifically for rendering of the widget header. |
+| host.isWebSupported | true or false | When this value is false, the host does not currently support loading a widget's web content. When this occurs, web widgets will display the fallback JSON payload supplied by the widget provider, but this value can be use to further customize the content. For more information, see [Web widget providers](/windows/apps/develop/widgets/web-widget-providers) |
+| host.isUserContextAuthenticated | true or false | When this value is false, the only action that is supported is [Action.OpenUrl](https://adaptivecards.io/explorer/Action.OpenUrl.html). The value of *isUserContextAuthenticated* can be used to adjust widget content appropriately, given the interactivity limitations. |
+
+
+The **Container size** and **Theme** dropdowns next to the **Select host app** dropdown at the top of the page allow you to set these properties without manually editing the sample host JSON in the editor.
## Create a new card
@@ -158,4 +169,53 @@ The following code listing shows the final version of the JSON payload.
}
]
}
-```
\ No newline at end of file
+```
+
+## Settings payload example
+
+The following code listing shows a simple example of a JSON payload that uses the **host.isSettingsPayload** property to display different
+content when the user has clicked the **Customize widget** button.
+
+```json
+{
+ "type": "AdaptiveCard",
+ "body": [
+ {
+ "type": "Container",
+ "items":[
+ {
+ "type": "TextBlock",
+ "text": "Content payload",
+ "$when": "${!$host.isSettingsPayload}"
+ }
+ ]
+ },
+ {
+ "type": "Container",
+ "items":[
+ {
+ "type": "TextBlock",
+ "text": "Settings payload",
+ "$when": "${$host.isSettingsPayload}"
+ }
+ ]
+ }
+],
+"actions": [
+ {
+ "type": "Action.Submit",
+ "title": "Increment",
+ "verb": "inc",
+ "$when": "${!$host.isSettingsPayload}"
+ },
+ {
+ "type": "Action.Submit",
+ "title": "Update Setting",
+ "verb": "setting",
+ "$when": "${$host.isSettingsPayload}"
+ }
+],
+ "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
+ "version": "1.6"
+}
+```
diff --git a/hub/apps/design/widgets/widgets-design-fundamentals.md b/hub/apps/design/widgets/widgets-design-fundamentals.md
index 5c5fa8fa1f..66d9bba2c7 100644
--- a/hub/apps/design/widgets/widgets-design-fundamentals.md
+++ b/hub/apps/design/widgets/widgets-design-fundamentals.md
@@ -1,8 +1,6 @@
---
-author: drewbatgit
description: Learn about the fundamentals of designing the UI for a Windows widget.
title: Widget design fundamentals
-ms.author: drewbat
ms.date: 01/19/2022
ms.topic: article
keywords: windows 11, widgets
@@ -11,11 +9,6 @@ ms.localizationpriority: medium
# Widget design fundamentals
-> [!NOTE]
-> **Some information relates to pre-released product, which may be substantially modified before it's commercially released. Microsoft makes no warranties, express or implied, with respect to the information provided here.**
-> [!IMPORTANT]
-> The feature described in this topic is available in Dev Channel preview builds of Windows starting with build 25217. For information on preview builds of Windows, see [Windows 10 Insider Preview](https://insider.windows.com/en-us/preview-windows).
-
This article provides detailed guidance for designing the UI for a Windows widget.
@@ -48,7 +41,7 @@ Large sizes allow for more information to be presented, but the content should s

-Windows 11 supports two color modes: light and dark. Each mode consists of a set of neutral color values that are automatically adjusted to ensure optimal contrast. For each widget size you support, make sure to create separate designs for light and dark themes so that the widget integrates seamlessly within the wider operating system and user’s theme choice. The widget background supports customization with either a solid light/dark background, gradient tint, or image background.
+Windows 11 supports two color modes: light and dark. Each mode consists of a set of neutral color values that are automatically adjusted to ensure optimal contrast. For each widget size you support, make sure to create separate designs for light and dark themes so that the widget integrates seamlessly within the wider operating system and user's theme choice. The widget background supports customization with either a solid light/dark background, gradient tint, or image background.

@@ -85,7 +78,7 @@ For accessibility, the following table presents the text of the table shown in t
| Body (for hyperlinks) | 14/20 epx | Default, Lighter, Accent |
| Body Strong | 14/20 epx | Default, Bolder |
| Body Large | 18/24 epx | Medium, Lighter |
-| Body Larget | 18/24 epx | Medium, Bolder |
+| Body Largest | 18/24 epx | Medium, Bolder |
| Subtitle | 20/28 epx | Large, Bolder |
| Title | 28/36 epx | Extra Large, Bolder |
@@ -107,4 +100,4 @@ If your widget includes showing user profiles (for example, a social media feed

-Tool tips can be used when title text gets truncated in the widget. For best practices, text should fit neatly within the widget space and not need truncation however, that may not always happen depending on scenarios like language localization, system text scaling, or when quoting something (i.e. article title, name of a song). This does not apply to body text on a widget.
\ No newline at end of file
+Tool tips can be used when title text gets truncated in the widget. For best practices, text should fit neatly within the widget space and not need truncation however, that may not always happen depending on scenarios like language localization, system text scaling, or when quoting something (i.e. article title, name of a song). This does not apply to body text on a widget.
diff --git a/hub/apps/design/widgets/widgets-interaction-design.md b/hub/apps/design/widgets/widgets-interaction-design.md
index 1090ac80e7..7629561462 100644
--- a/hub/apps/design/widgets/widgets-interaction-design.md
+++ b/hub/apps/design/widgets/widgets-interaction-design.md
@@ -1,8 +1,6 @@
---
-author: drewbatgit
description: This article provides detailed guidance for designing interaction for Windows widgets.
title: Widget interaction design guidance
-ms.author: drewbat
ms.date: 01/19/2022
ms.topic: article
keywords: windows 11, widgets
@@ -20,7 +18,7 @@ This article provides detailed guidance for designing interaction for Windows wi
## Navigation
-A widget should be glanceable and focused, and should represent a single aspect of the app’s primary purpose. Widgets may provide one or more calls to action. When the user clicks on a call to action, the widget should launch the associated app or website instead of implementing the action in the widget itself. A widget has only one primary page that can house multiple interactions. Clicking on an item in the widget should never take you to a completely different view of the widget. For example, in a weather widget you might show the weather for multiple days but clicking on one of the days will not expand details inline, but will instead launch the app or web.
+A widget should be glanceable and focused, and should represent a single aspect of the app's primary purpose. Widgets may provide one or more calls to action. When the user clicks on a call to action, the widget should launch the associated app or website instead of implementing the action in the widget itself. A widget has only one primary page that can house multiple interactions. Clicking on an item in the widget should never take you to a completely different view of the widget. For example, in a weather widget you might show the weather for multiple days but clicking on one of the days will not expand details inline, but will instead launch the app or web.
The following are the maximum number of touch points recommended for each supported widget size.
diff --git a/hub/apps/design/widgets/widgets-picker-integration.md b/hub/apps/design/widgets/widgets-picker-integration.md
index 942a35e279..d276466277 100644
--- a/hub/apps/design/widgets/widgets-picker-integration.md
+++ b/hub/apps/design/widgets/widgets-picker-integration.md
@@ -1,8 +1,6 @@
---
-author: drewbatgit
description: Learn about the design elements required for integrating into the widget picker on the Widgets Board.
title: Integrate with the widget picker
-ms.author: drewbat
ms.date: 01/19/2023
ms.topic: article
keywords: windows 11, widgets
@@ -40,7 +38,7 @@ You may provide widget screenshots for multiple locales. The locale for each scr
* "English (United States)" assets should be placed in a subdirectory named "en-us": "Assets/en-us/Screenshot.png"
* "French (France)" assets should be placed in a subdirectory named "fr-fr": "Assets/fr-fr/Screenshot.png"
* Reference these images in the appxmanifest using the ms-appx: URI scheme. For example: Screenshot="ms-appx:Assets\Screenshot.png"
-* If you don’t include an image for a specific locale, then the fallback image in the root directory will be used.
+* If you don't include an image for a specific locale, then the fallback image in the root directory will be used.
The resource loader will automatically choose the language-appropriate asset to display. For more information, see: [Load images and assets tailored for scale, theme, high contrast, and others](/windows/uwp/app-resources/images-tailored-for-scale-theme-contrast#refer-to-an-image-file-from-your-app-package-manifest).
diff --git a/hub/apps/design/widgets/widgets-states-and-ui.md b/hub/apps/design/widgets/widgets-states-and-ui.md
index b6903a8b56..5dfe503e6f 100644
--- a/hub/apps/design/widgets/widgets-states-and-ui.md
+++ b/hub/apps/design/widgets/widgets-states-and-ui.md
@@ -1,8 +1,6 @@
---
-author: drewbatgit
description: Learn about the different states of a widget and the UI components that are built into the Windows widgets experience.
title: Widget states and built-in UI components
-ms.author: drewbat
ms.date: 01/19/2022
ms.topic: article
keywords: windows 11, widgets
@@ -66,7 +64,9 @@ If there is cached content available to be displayed, the widget header will sho
Long widget partner names will get truncated while showing a cached message at 15 characters max.
+### Customization state
+Starting with Windows App SDK 1.4, widgets can provide a customization template that provides controls for the user to customize the widget's appearance or the data displayed by the widget. The customization UI is defined in a JSON template.
## Built-in widget UI components
diff --git a/hub/apps/desktop/images/header-community.png b/hub/apps/desktop/images/header-community.png
new file mode 100644
index 0000000000..5c5f1a05ec
Binary files /dev/null and b/hub/apps/desktop/images/header-community.png differ
diff --git a/hub/apps/desktop/index.yml b/hub/apps/desktop/index.yml
index 18d087f7b2..b8fc157bc2 100644
--- a/hub/apps/desktop/index.yml
+++ b/hub/apps/desktop/index.yml
@@ -1,16 +1,14 @@
### YamlMime:Landing
title: Build desktop apps for Windows
-summary: This documentation provides the latest guidance about building desktop apps for Windows 11 and Windows 10.
+summary: This documentation provides the latest guidance about building desktop apps for Windows 11.
metadata:
title: Build desktop apps for Windows | Microsoft Docs
- description: This documentation provides the latest guidance about building desktop apps for Windows 11 and Windows 10.
+ description: This documentation provides the latest guidance about building desktop apps for Windows 11.
ms.topic: landing-page
ms.collection: collection
- ms.author: stwhi
- author: stevewhims
- ms.date: 06/17/2021
+ ms.date: 11/25/2025
keywords: windows win32, desktop development
# linkListType: architecture | concept | deploy | download | get-started | how-to-guide | learn | overview | quickstart | reference | tutorial | video | whats-new
@@ -20,59 +18,82 @@ landingContent:
linkLists:
- linkListType: get-started
links:
- - text: Install tools for the Windows App SDK
- url: ../windows-app-sdk/set-up-your-development-environment.md
- - text: Enable your device for development
- url: ../get-started/enable-your-device-for-development.md
- - text: Developer Mode features and debugging
- url: ../get-started/developer-mode-features-and-debugging.md
- - text: Create a developer account
- url: ../get-started/sign-up.md
-
- - title: Start building apps
- linkLists:
- - linkListType: overview
- links:
- - text: Get started with desktop apps
+ - text: What's new in Windows development
+ url: /windows/apps/whats-new/whats-new-for-developers
+ - text: Setup and tools
+ url: ../get-started/start-here.md
+ - text: An overview of UI frameworks
url: ../get-started/index.md
- - text: Build apps with the Windows App SDK
+ - text: Window App SDK
url: ../windows-app-sdk/index.md
- - text: Create your first WinUI 3 project
- url: ../winui/winui3/create-your-first-winui3-app.md
- - text: Overview of Progressive Web Apps (PWAs)
- url: /microsoft-edge/progressive-web-apps-chromium/
- - text: Make your apps great on Windows 11
- url: ../get-started/make-apps-great-for-windows.md
- - linkListType: reference
- links:
- - text: Visual Studio templates for Windows apps
- url: visual-studio-templates.md
- title: Design and UI
linkLists:
- linkListType: overview
links:
- - text: Design and code your app UI
+ - text: Design your app
url: ../design/index.md
- - text: Windows UI Library (WinUI)
- url: ../winui/index.md
- - text: Windows 11 design principles
- url: ../design/signature-experiences/design-principles.md
- - linkListType: reference
- links:
- - text: WinUI API reference
- url: /windows/winui/api/
+ - text: Design resources and tools
+ url: ../design/downloads/index.md
+ - text: Design for accessibility
+ url: ../design/accessibility/accessibility.md
+ - text: Design basics
+ url: ../design/basics/index.md
- title: Develop
linkLists:
- - linkListType: overview
+ - linkListType: how-to-guide
links:
- - text: Features and technologies for Windows apps
+ - text: Develop apps
url: ../develop/index.md
- - text: Windows App SDK
- url: ../windows-app-sdk/index.md
- - text: Modernize your desktop apps
- url: modernize/index.md
+ - text: Best practices for Windows apps
+ url: ../get-started/best-practices.md
+ - text: Windows developer FAQ
+ url: ../get-started/windows-developer-faq.md
+ - text: Other development tools
+ url: /windows/dev-environment/
+
+ - title: Deploy
+ linkLists:
+ - linkListType: overview
+ links:
+ - text: Packaging and deployment overview
+ url: ../package-and-deploy/index.md
+ - text: Learn about packaged and unpackaged apps
+ url: ../desktop/modernize/package-identity-overview.md
+ - text: Windows App SDK deployment guide
+ url: ../package-and-deploy/deploy-overview.md
+ - text: The MSIX app package format
+ url: /windows/msix
+
+ - title: Distribute
+ linkLists:
+ - linkListType: overview
+ links:
+ - text: Microsoft Store overview
+ url: ../publish/index.md
+ - text: Open a developer account
+ url: ../publish/partner-center/open-a-developer-account.md
+ - text: Microsoft Store FAQ
+ url: ../publish/faq/get-started-with-the-microsoft-store.md
+ - text: Microsoft Store Policies
+ url: ../publish/store-policies.md
+
+ - title: Artificial intelligence and machine learning
+ linkLists:
+ - linkListType: concept
+ links:
+ - text: Windows AI
+ url: /windows/ai/
+ - text: GitHub Copilot extension for Visual Studio
+ url: /visualstudio/ide/visual-studio-github-copilot-extension
+ - text: App Actions on Windows
+ url: /windows/ai/app-actions/
+ - text: Windows ML
+ url: /windows/ai/new-windows-ml/overview
+
+ - title: API Reference
+ linkLists:
- linkListType: reference
links:
- text: WinRT API for the Windows SDK
@@ -83,29 +104,33 @@ landingContent:
url: /windows/windows-app-sdk/api/winrt/
- text: Win32 API for the Windows App SDK
url: /windows/windows-app-sdk/api/win32/
+ - text: WinUI 2 for UWP API reference
+ url: /windows/winui/api/
- - title: Deploy
+ - title: Platforms
linkLists:
- - linkListType: overview
+ - linkListType: architecture
links:
- - text: Deployment overview
- url: ../package-and-deploy/index.md
- - text: Deploy apps that use the Windows App SDK
- url: ../package-and-deploy/index.md#use-the-windows-app-sdk
- - text: MSIX documentation
- url: /windows/msix
-
+ - text: Windows App SDK
+ url: ../windows-app-sdk/index.md
+ - text: .NET MAUI
+ url: /dotnet/maui/what-is-maui
+ - text: Universal Windows Platform (UWP)
+ url: /windows/uwp/
+ - text: Windows Presentation Foundation (WPF)
+ url: /dotnet/desktop/wpf/overview/?view=netdesktop-7.0
+ - text: Windows Forms
+ url: /dotnet/desktop/winforms/overview/?view=netdesktop-7.0
+
- title: Community and support
linkLists:
- linkListType: overview
links:
- - text: Windows App SDK on GitHub
- url: https://github.com/microsoft/ProjectReunion
- - text: Windows UI Library (WinUI) on GitHub
- url: https://github.com/microsoft/microsoft-ui-xaml
- - text: "@WindowsDocs on Twitter"
+ - text: Microsoft Q&A Forum
+ url: /answers/questions/
+ - text: "@WindowsDocs"
url: https://twitter.com/WindowsDocs
- text: OneDevMinute on YouTube
url: /shows/One-Dev-Minute/?WT.mc_id=odm-c9-niner
- text: Windows developer support
- url: https://developer.microsoft.com/windows/support
\ No newline at end of file
+ url: https://developer.microsoft.com/windows/support
diff --git a/hub/apps/desktop/modernize/desktop-to-uwp-distribute.md b/hub/apps/desktop/modernize/desktop-to-uwp-distribute.md
index 29d1233934..92c7dc7be5 100644
--- a/hub/apps/desktop/modernize/desktop-to-uwp-distribute.md
+++ b/hub/apps/desktop/modernize/desktop-to-uwp-distribute.md
@@ -2,7 +2,7 @@
title: Publish your packaged desktop application to the Microsoft Store or sideload it onto one or more devices.
description: Learn how to use Desktop Bridge to distribute a packaged desktop application to the Microsoft Store or sideload it onto one or more devices.
ms.date: 05/18/2018
-ms.topic: article
+ms.topic: how-to
keywords: windows 10, uwp
ms.assetid: edff3787-cecb-4054-9a2d-1fbefa79efc4
ms.localizationpriority: medium
diff --git a/hub/apps/desktop/modernize/desktop-to-uwp-enhance.md b/hub/apps/desktop/modernize/desktop-to-uwp-enhance.md
index a3803fa2a1..266792750e 100644
--- a/hub/apps/desktop/modernize/desktop-to-uwp-enhance.md
+++ b/hub/apps/desktop/modernize/desktop-to-uwp-enhance.md
@@ -1,8 +1,8 @@
----
+---
description: Enhance your desktop application for Windows users by using Windows Runtime APIs.
title: Call Windows Runtime APIs in desktop apps
ms.date: 04/02/2021
-ms.topic: article
+ms.topic: how-to
keywords: windows 10, uwp
ms.localizationpriority: medium
ms.custom: 19H1
@@ -35,25 +35,27 @@ This option is supported only in projects that use .NET 6 (or later) and target
WinExe
- net5.0
+ net8.0
```
2. Leaving all other settings as they are, replace the value of the **TargetFramework** element with one of the following strings:
- * **net6.0-windows10.0.17763.0**: If your app targets Windows 10, version 1809.
- * **net6.0-windows10.0.18362.0**: If your app targets Windows 10, version 1903.
- * **net6.0-windows10.0.19041.0**: If your app targets Windows 10, version 2004.
- * **net6.0-windows10.0.22000.0**: If your app targets Windows 11.
+ * **net8.0-windows10.0.17763.0**: If your app targets Windows 10, version 1809.
+ * **net8.0-windows10.0.18362.0**: If your app targets Windows 10, version 1903.
+ * **net8.0-windows10.0.19041.0**: If your app targets Windows 10, version 2004.
+ * **net8.0-windows10.0.22000.0**: If your app targets initial release of Windows 11.
+ * **net8.0-windows10.0.22621.0**: If your app targets Windows 11, version 22H2.
+ * **net8.0-windows10.0.26100.0**: If your app targets Windows 11, version 24H2.
For example, the following element is for a project that targets Windows 10, version 2004.
```xml
- net6.0-windows10.0.19041.0
+ net8.0-windows10.0.19041.0
```
- In later versions of .NET, you can replace the value with the relevant version, for example **net6.0-windows10.0.19041.0**.
+ In later versions of .NET, you can replace the value with the relevant version, for example **net8.0-windows10.0.19041.0**.
3. Save your changes and close the project file.
@@ -76,7 +78,7 @@ The **TargetPlatformMinVersion** can be overridden to be less than the **TargetP
WinExe
- net6.0-windows10.0.19041.0
+ net8.0-windows10.0.19041.010.0.17763.0
@@ -131,6 +133,9 @@ If your project multi-targets .NET 6 (or later) and earlier versions (including
* **net6.0-windows10.0.17763.0**: If your app targets Windows 10, version 1809.
* **net6.0-windows10.0.18362.0**: If your app targets Windows 10, version 1903.
* **net6.0-windows10.0.19041.0**: If your app targets Windows 10, version 2004.
+ * **net6.0-windows10.0.22000.0**: If your app targets initial release of Windows 11.
+ * **net6.0-windows10.0.22621.0**: If your app targets Windows 11, version 22H2.
+ * **net6.0-windows10.0.26100.0**: If your app targets Windows 11, version 24H2.
* For .NET Core 3.x, use **netcoreapp3.0** or **netcoreapp3.1**.
* For .NET Framework, use **net46**.
@@ -201,7 +206,7 @@ You'll often hear us use the terms *enhance* and *extend*, so we'll take a momen
We use the term *enhance* to describe WinRT APIs that you can call directly from your desktop app whether or not it's a packaged app. When you've chosen a Windows 10 experience, identify the APIs that you need to create it, and then see if that API appears in [this list](desktop-to-uwp-supported-api.md). This is a list of APIs that you can call directly from your desktop app. If your API does not appear in this list, that's because the functionality associated with that API can run only within a UWP process. Often times, these include APIs that render UWP XAML such as a UWP map control or a Windows Hello security prompt.
> [!NOTE]
-> Although APIs that render UWP XAML typically cannot be called directly from your desktop, you might be able to use alternative approaches. If you want to host UWP XAML controls or other custom visual experiences, you can use [XAML Islands](xaml-islands.md) (starting in Windows 10, version 1903) and the [Visual layer](visual-layer-in-desktop-apps.md) (starting in Windows 10, version 1803). These features can be used in packaged or unpackaged desktop apps.
+> Although APIs that render UWP XAML typically cannot be called directly from your desktop, you might be able to use alternative approaches. If you want to host UWP XAML controls or other custom visual experiences, you can use [XAML Islands](xaml-islands/xaml-islands.md) (starting in Windows 10, version 1903) and the [Visual layer](ui/visual-layer-in-desktop-apps.md) (starting in Windows 10, version 1803). These features can be used in packaged or unpackaged desktop apps.
If you have chosen to package your desktop app, then another option is to *extend* the application by adding a UWP project to your solution. The desktop project is still the entry point of your application, but the UWP project gives you access to all of the APIs that do not appear in [this list](desktop-to-uwp-supported-api.md). The desktop app can communicate with the UWP process by using a an app service and we have lots of guidance on how to set that up. If you want to add an experience that requires a UWP project, see [Extend with UWP components](desktop-to-uwp-extend.md).
@@ -293,25 +298,25 @@ using namespace Windows::Data::Xml::Dom;
void UWP::ShowToast()
{
- Platform::String ^title = "featured picture of the day";
- Platform::String ^content = "beautiful scenery";
- Platform::String ^image = "https://picsum.photos/360/180?image=104";
- Platform::String ^logo = "https://picsum.photos/64?image=883";
-
- Platform::String ^xmlString =
- L"" +
- L"" + title + "" +
- L""+ content + "" +
- L"" +
- L"" +
- L"";
+ Platform::String ^title = "featured picture of the day";
+ Platform::String ^content = "beautiful scenery";
+ Platform::String ^image = "https://picsum.photos/360/180?image=104";
+ Platform::String ^logo = "https://picsum.photos/64?image=883";
+
+ Platform::String ^xmlString =
+ L"" +
+ L"" + title + "" +
+ L""+ content + "" +
+ L"" +
+ L"" +
+ L"";
- XmlDocument ^toastXml = ref new XmlDocument();
+ XmlDocument ^toastXml = ref new XmlDocument();
- toastXml->LoadXml(xmlString);
+ toastXml->LoadXml(xmlString);
- ToastNotificationManager::CreateToastNotifier()->Show(ref new ToastNotification(toastXml));
+ ToastNotificationManager::CreateToastNotifier()->Show(ref new ToastNotification(toastXml));
}
```
diff --git a/hub/apps/desktop/modernize/desktop-to-uwp-extend.md b/hub/apps/desktop/modernize/desktop-to-uwp-extend.md
index eebaf339a3..7c1df0ae17 100644
--- a/hub/apps/desktop/modernize/desktop-to-uwp-extend.md
+++ b/hub/apps/desktop/modernize/desktop-to-uwp-extend.md
@@ -2,14 +2,14 @@
title: Extend your app with Windows UI and components
description: Extend your desktop application with UWP projects and Windows Runtime components to add modern Windows experiences.
ms.date: 06/08/2018
-ms.topic: article
+ms.topic: how-to
keywords: windows 10, uwp
ms.localizationpriority: medium
---
# Extend your desktop app with modern UWP components
-Some Windows experiences (For example, a touch-enabled UI page) must run inside of a modern app container. If you want to add such experiences, then extend your desktop app with UWP projects and Windows Runtime components.
+Some Windows experiences (For example, a touch-enabled UI page) must run inside of an AppContainer. If you want to add such experiences, then extend your desktop app with UWP projects and Windows Runtime components.
In many cases you can call Windows Runtime APIs directly from your desktop application, so before you review this guide, see [Enhance for Windows](desktop-to-uwp-enhance.md).
@@ -83,7 +83,7 @@ This image shows a Windows Forms application that opens a XAML-based modern UI t

>[!NOTE]
->This example shows a XAML UI by adding a UWP project to the solution. That is the stable supported approach to showing XAML UIs in a desktop application. The alternative to this approach is to add UWP XAML controls directly to your desktop application by using a XAML Island. XAML Islands are currently available as a developer preview. Although we encourage you to try them out in your own prototype code now, we do not recommend that you use them in production code at this time. These APIs and controls will continue to mature and stabilize in future Windows releases. To learn more about XAML Islands, see [UWP controls in desktop applications](xaml-islands.md)
+>This example shows a XAML UI by adding a UWP project to the solution. That is the stable supported approach to showing XAML UIs in a desktop application. The alternative to this approach is to add UWP XAML controls directly to your desktop application by using a XAML Island. XAML Islands are currently available as a developer preview. Although we encourage you to try them out in your own prototype code now, we do not recommend that you use them in production code at this time. These APIs and controls will continue to mature and stabilize in future Windows releases. To learn more about XAML Islands, see [UWP controls in desktop applications](xaml-islands/xaml-islands.md)
### The design pattern
@@ -490,4 +490,4 @@ public void RegisterBackgroundTask(String triggerName)
## Find answers to your questions
-Have questions? Ask us on Stack Overflow. Our team monitors these [tags](https://stackoverflow.com/questions/tagged/project-centennial+or+desktop-bridge). You can also ask us [here](https://social.msdn.microsoft.com/Forums/en-US/home?filter=alltypes&sort=relevancedesc&searchTerm=%5BDesktop%20Converter%5D).
\ No newline at end of file
+Have questions? Ask us on Stack Overflow. Our team monitors these [tags](https://stackoverflow.com/questions/tagged/project-centennial+or+desktop-bridge). You can also ask us [here](https://social.msdn.microsoft.com/Forums/en-US/home?filter=alltypes&sort=relevancedesc&searchTerm=%5BDesktop%20Converter%5D).
diff --git a/hub/apps/desktop/modernize/desktop-to-uwp-extensions.md b/hub/apps/desktop/modernize/desktop-to-uwp-extensions.md
index 6cd6de890e..f0bc56d904 100644
--- a/hub/apps/desktop/modernize/desktop-to-uwp-extensions.md
+++ b/hub/apps/desktop/modernize/desktop-to-uwp-extensions.md
@@ -1,14 +1,14 @@
---
description: You can use extensions to integrate your packaged desktop app with Windows 10 and later releases in predefined ways.
title: Integrate your desktop app with Windows using packaging extensions
-ms.date: 09/11/2020
-ms.topic: article
-keywords: windows 10, uwp
+ms.date: 05/07/2024
+ms.topic: how-to
+keywords: windows 11, windows 10, uwp
ms.assetid: 0a8cedac-172a-4efd-8b6b-67fd3667df34
ms.localizationpriority: medium
---
-# Integrate your desktop app with Windows using packaging extensions
+# Integrate your desktop app with Windows by using packaging extensions
If your desktop app is packaged (has package identity at runtime), then you can use extensions to integrate your app with Windows by using predefined [extensions in the package manifest](/uwp/schemas/appxpackage/uapmanifestschema/extensions). Also see [Features that require package identity](./modernize-packaged-apps.md).
@@ -670,9 +670,9 @@ Find the complete schema reference [here](/uwp/schemas/appxpackage/uapmanifestsc
-
+ .bar
-
+
@@ -732,9 +732,9 @@ Find the complete schema reference [here](/uwp/schemas/appxpackage/uapmanifestsc
-
+ .bar
-
+
@@ -910,7 +910,7 @@ To register your context menu handler, follow these instructions.
1. In your desktop application, implement a [context menu handler](/windows/desktop/shell/context-menu-handlers) by implementing the [IExplorerCommand](/windows/desktop/api/shobjidl_core/nn-shobjidl_core-iexplorercommand) or [IExplorerCommandState](/windows/desktop/api/shobjidl_core/nn-shobjidl_core-iexplorercommandstate) interface. For a sample, see the [ExplorerCommandVerb](https://github.com/microsoft/Windows-classic-samples/tree/master/Samples/Win7Samples/winui/shell/appshellintegration/ExplorerCommandVerb) code sample. Make sure that you define a class GUID for each of your implementation objects. For example, the following code defines a class ID for an implementation of [IExplorerCommand](/windows/desktop/api/shobjidl_core/nn-shobjidl_core-iexplorercommand).
```cpp
- class __declspec(uuid("d0c8bceb-28eb-49ae-bc68-454ae84d6264")) CExplorerCommandVerb;
+ class __declspec(uuid("00001111-aaaa-2222-bbbb-3333cccc4444")) CExplorerCommandVerb;
```
2. In your package manifest, specify a [com:ComServer](/uwp/schemas/appxpackage/uapmanifestschema/element-com-comserver) application extension that registers a COM surrogate server with the class ID of your context menu handler implementation.
@@ -918,8 +918,8 @@ To register your context menu handler, follow these instructions.
```xml
-
-
+
+
@@ -931,7 +931,7 @@ To register your context menu handler, follow these instructions.
-
+
@@ -950,15 +950,15 @@ To register your context menu handler, follow these instructions.
-
-
+
+
-
+
diff --git a/hub/apps/desktop/modernize/desktop-to-uwp-supported-api.md b/hub/apps/desktop/modernize/desktop-to-uwp-supported-api.md
index 48ffa86e56..db4b9d837c 100644
--- a/hub/apps/desktop/modernize/desktop-to-uwp-supported-api.md
+++ b/hub/apps/desktop/modernize/desktop-to-uwp-supported-api.md
@@ -1,7 +1,7 @@
---
description: This article describes WinRT APIs that aren't supported for use in desktop apps, or that have restrictions.
title: Windows Runtime APIs not supported in desktop apps
-ms.date: 09/16/2022
+ms.date: 02/27/2024
ms.topic: article
keywords: windows 10, uwp
ms.assetid: 142b9c9b-3f7d-41b6-80da-1505de2810f9
@@ -68,7 +68,7 @@ The following classes *are* supported in desktop apps; but to retrieve an instan
| [**ResourceLoader**](/uwp/api/windows.applicationmodel.resources.resourceloader) | See [MRT to MRT Core migration](../../windows-app-sdk/migrate-to-windows-app-sdk/guides/mrtcore.md). |
| [**SpatialInteractionManager**](/uwp/api/windows.ui.input.spatial.spatialinteractionmanager) | Use the [**ISpatialInteractionManagerInterop**](/windows/win32/api/spatialinteractionmanagerinterop/nn-spatialinteractionmanagerinterop-ispatialinteractionmanagerinterop) COM interface instead (in `spatialinteractionmanagerinterop.h`). |
| [**SystemMediaTransportControls**](/uwp/api/windows.media.systemmediatransportcontrols) | Use the [**ISystemMediaTransportControlsInterop**](/windows/win32/api/systemmediatransportcontrolsinterop/nn-systemmediatransportcontrolsinterop-isystemmediatransportcontrolsinterop) COM interface instead (in `systemmediatransportcontrolsinterop.h`). |
-| [**UserActivityRequestManager**](/uwp/api/windows.applicationmodel.useractivities.useractivityrequestmanager) | Use the [**IUserActivityRequestManagerInterop**](/windows/win32/api/useractivityinterop/nn-useractivityinterop-iuseractivityrequestmanagerinterop) COM interface insead (in `useractivityinterop.h`). |
+| [**UserActivityRequestManager**](/uwp/api/windows.applicationmodel.useractivities.useractivityrequestmanager) | Use the [**IUserActivityRequestManagerInterop**](/windows/win32/api/useractivityinterop/nn-useractivityinterop-iuseractivityrequestmanagerinterop) COM interface instead (in `useractivityinterop.h`). |
| [**UIViewSettings**](/uwp/api/windows.ui.viewmanagement.uiviewsettings) | Use the [**IUIViewSettingsInterop**](/windows/win32/api/uiviewsettingsinterop/nn-uiviewsettingsinterop-iuiviewsettingsinterop) COM interface instead (in `uiviewsettingsinterop.h`). |
The following classes are *not* supported in desktop apps because the APIs don't provide an alternative to their **GetForCurrentView** or **CreateForCurrentView** method. The list might not be comprehensive.
@@ -125,7 +125,7 @@ The following classes are supported in desktop apps, except for the specified me
#### Methods that use the Request naming pattern
-Methods that follow the **Request** naming pattern—such as [**AppCapability.RequestAccessAsync**](/uwp/api/windows.security.authorization.appcapabilityaccess.appcapability.requestaccessasync) and [**StoreContext.RequestPurchaseAsync**](/uwp/api/windows.services.store.storecontext.requestpurchaseasync)—aren't supported in desktop apps. Internally, these methods use the [**Windows.UI.Popups**](/uwp/api/windows.ui.popups) class. That class requires that the thread have a [**CoreWindow**](/uwp/api/Windows.UI.Core.CoreWindow) object, which isn't supported in desktop apps.
+Most methods that follow the **Request** naming pattern—such as [**AppCapability.RequestAccessAsync**](/uwp/api/windows.security.authorization.appcapabilityaccess.appcapability.requestaccessasync) and [**StoreContext.RequestPurchaseAsync**](/uwp/api/windows.services.store.storecontext.requestpurchaseasync)—aren't supported in desktop apps. Internally, these methods use the [**Windows.UI.Popups**](/uwp/api/windows.ui.popups) class. That class requires that the thread have a [**CoreWindow**](/uwp/api/Windows.UI.Core.CoreWindow) object, which isn't supported in desktop apps.
The full list of methods that follow the **Request** naming pattern is very long, and this article doesn't provide a comprehensive list of those methods.
diff --git a/hub/apps/desktop/modernize/framework-packages/framework-packages-overview.md b/hub/apps/desktop/modernize/framework-packages/framework-packages-overview.md
index 4c7411db41..21f96a27a8 100644
--- a/hub/apps/desktop/modernize/framework-packages/framework-packages-overview.md
+++ b/hub/apps/desktop/modernize/framework-packages/framework-packages-overview.md
@@ -12,7 +12,7 @@ This article introduces important concepts related to *MSIX framework packages*.
## Framework packages and the package graph
-[MSIX](/windows/msix) is a package format that provides a modern packaging and deployment experience. It also provides a clean and trusted way to package redistributable libraries, content and components via *MSIX framework packages*. An MSIX framework package allows packaged apps to access components through a single shared source on the user's device, instead of bundling them into the app package. Common framework packages include the [Windows App SDK](../../../windows-app-sdk/index.md) (including WinUI3), [WinUI2](../../../winui/winui2/index.md), [VCLibs](/troubleshoot/cpp/c-runtime-packages-desktop-bridge), and the DirectX Runtime.
+[MSIX](/windows/msix) is a package format that provides a modern packaging and deployment experience. It also provides a clean and trusted way to package redistributable libraries, content and components via *MSIX framework packages*. An MSIX framework package allows packaged apps to access components through a single shared source on the user's device, instead of bundling them into the app package. Common framework packages include the [Windows App SDK](../../../windows-app-sdk/index.md) (including WinUI3), [WinUI2](/windows/uwp/get-started/winui2/), [VCLibs](/troubleshoot/cpp/c-runtime-packages-desktop-bridge), and the DirectX Runtime.
Starting in Windows 8 and continuing through Windows 10 and Windows 11, every process has a *package graph* that provides the list of all the packages available to the app, including framework, resource, optional, and main packages. This graph allows the app to load DLLs, content, and run-time class declarations provided by a referenced package. Historically, this graph was fixed at process creation time, and there was no way to alter it at run time:
@@ -26,7 +26,7 @@ This static package graph restriction is lifted with the introduction of the dyn
Although dynamic dependencies enables any app to add a package framework dependency at run time, this feature is primarily intended to be used by apps packaged with external location or unpackaged apps. Packaged apps can still continue to add static dependencies via the [PackageDependency](/uwp/schemas/appxpackage/uapmanifestschema/element-packagedependency) element in their package manifest.
- Most developers will use dynamic dependencies only to reference the [Windows App SDK](../../../windows-app-sdk/index.md) framework package in a packaged with external location or unpackaged app, so that the app can call APIs provided by the Windows App SDK runtime. For more information about this scenario, see [Use the Windows App SDK runtime for apps packaged with external location or unpackaged](../../../windows-app-sdk/use-windows-app-sdk-run-time.md).
-- In some cases, developers may want to use dynamic dependencies to reference a different framework package (other than the Windows App SDK framework package) from an unpackaged app, such as the framework package for [WinUI2](../../../winui/winui2/index.md) or the DirectX Runtime. For more information about this scenario, see [Use the dynamic dependency API to reference MSIX packages at run time](use-the-dynamic-dependency-api.md).
+- In some cases, developers may want to use dynamic dependencies to reference a different framework package (other than the Windows App SDK framework package) from an unpackaged app, such as the framework package for [WinUI2](/windows/uwp/get-started/winui2/) or the DirectX Runtime. For more information about this scenario, see [Use the dynamic dependency API to reference MSIX packages at run time](use-the-dynamic-dependency-api.md).
## Servicing model for framework packages
diff --git a/hub/apps/desktop/modernize/framework-packages/index.md b/hub/apps/desktop/modernize/framework-packages/index.md
index ba34ba7fab..428d2644ff 100644
--- a/hub/apps/desktop/modernize/framework-packages/index.md
+++ b/hub/apps/desktop/modernize/framework-packages/index.md
@@ -10,7 +10,7 @@ ms.localizationpriority: medium
The [Windows App SDK](../../../windows-app-sdk/index.md) and the Windows 11 OS both enable your apps to reference and use [MSIX framework packages](framework-packages-overview.md) dynamically at run time by using a feature called *dynamic dependencies*. This feature is intended to be used primarily by unpackaged desktop apps to use APIs and other content provided by MSIX framework packages.
-The most common scenario for using the dynamic dependencies feature is to reference the [Windows App SDK](../../../windows-app-sdk/index.md) framework package in an unpackaged app. In some scenarios, you may want to use the dynamic dependencies feature to reference a different framework package from an unpackaged app, such as the framework package for [WinUI 2](../../../winui/winui2/index.md) or the DirectX Runtime.
+The most common scenario for using the dynamic dependencies feature is to reference the [Windows App SDK](../../../windows-app-sdk/index.md) framework package in an unpackaged app. In some scenarios, you may want to use the dynamic dependencies feature to reference a different framework package from an unpackaged app, such as the framework package for [WinUI 2](/windows/uwp/get-started/winui2/) or the DirectX Runtime.
For an overview of the dynamic dependencies feature and guidance about using it in your apps, see the following articles.
diff --git a/hub/apps/desktop/modernize/framework-packages/use-the-dynamic-dependency-api.md b/hub/apps/desktop/modernize/framework-packages/use-the-dynamic-dependency-api.md
index 622d648211..2023f4d165 100644
--- a/hub/apps/desktop/modernize/framework-packages/use-the-dynamic-dependency-api.md
+++ b/hub/apps/desktop/modernize/framework-packages/use-the-dynamic-dependency-api.md
@@ -20,7 +20,7 @@ Also see [Differences between the two implementations](#differences-between-the-
> [!NOTE]
> As you'll see in this topic, the Windows App SDK (C/C++) APIs have the same names as the Windows 11 (C/C++) APIs with an additional **Mdd** prefix. **Mdd** stands for *Microsoft Dynamic Dependencies*.
-And there are different kinds of MSIX packages, including *framework*, *resource*, *optional*, and *main* packages. The dynamic dependency API enables unpackaged apps to reference and to use *framework* packages such as [WinUI 2](../../../winui/winui2/index.md) and the DirectX Runtime. For more info about framework package dependencies, see [MSIX framework packages and dynamic dependencies](framework-packages-overview.md).
+And there are different kinds of MSIX packages, including *framework*, *resource*, *optional*, and *main* packages. The dynamic dependency API enables unpackaged apps to reference and to use *framework* packages such as [WinUI 2](/windows/uwp/get-started/winui2/) and the DirectX Runtime. For more info about framework package dependencies, see [MSIX framework packages and dynamic dependencies](framework-packages-overview.md).
Specifically, the dynamic dependency API provides ways to manage the *install-time references* and *run-time references* for MSIX packages. For more info, see [Servicing model for framework packages](framework-packages-overview.md#servicing-model-for-framework-packages).
diff --git a/hub/apps/desktop/modernize/get-activation-info-for-packaged-apps.md b/hub/apps/desktop/modernize/get-activation-info-for-packaged-apps.md
index a25de541e0..8d3f22ae25 100644
--- a/hub/apps/desktop/modernize/get-activation-info-for-packaged-apps.md
+++ b/hub/apps/desktop/modernize/get-activation-info-for-packaged-apps.md
@@ -64,5 +64,5 @@ You can use the [AppInstance.GetActivatedEventArgs](/uwp/api/windows.application
| [ToastNotificationActivatedEventArgs](/uwp/api/windows.applicationmodel.activation.toastnotificationactivatedeventargs) | desktop:ToastNotificationActivation | [Toast notifications from desktop apps](/windows/uwp/design/shell/tiles-and-notifications/toast-desktop-apps). |
| [StartupTaskActivatedEventArgs](/uwp/api/windows.applicationmodel.activation.startuptaskactivatedeventargs) | desktop:StartupTask | [Start an executable file when users log into Windows](./desktop-to-uwp-extensions.md#start-an-executable-file-when-users-log-into-windows) |
| [FileActivatedEventArgs](/uwp/api/windows.applicationmodel.activation.fileactivatedeventargs) | [uap:FileTypeAssociation](/uwp/schemas/appxpackage/uapmanifestschema/element-uap-filetypeassociation) | [Associate your packaged application with a set of file types](./desktop-to-uwp-extensions.md#associate-your-packaged-application-with-a-set-of-file-types) |
-| [VoiceCommandActivatedEventArgs](/uwp/api/windows.applicationmodel.activation.voicecommandactivatedeventargs) | None | [Handle activation and execute voice commands](/cortana/voice-commands/launch-a-foreground-app-with-voice-commands-in-cortana) |
-| [LaunchActivatedEventArgs](/uwp/api/windows.applicationmodel.activation.launchactivatedeventargs) | None | |
\ No newline at end of file
+| [VoiceCommandActivatedEventArgs](/uwp/api/windows.applicationmodel.activation.voicecommandactivatedeventargs) | None | [Activate a foreground app with voice commands through Cortana](../../design/input/cortana-launch-a-foreground-app-with-voice-commands.md) |
+| [LaunchActivatedEventArgs](/uwp/api/windows.applicationmodel.activation.launchactivatedeventargs) | None | |
diff --git a/hub/apps/desktop/modernize/grant-identity-to-nonpackaged-apps-overview.md b/hub/apps/desktop/modernize/grant-identity-to-nonpackaged-apps-overview.md
new file mode 100644
index 0000000000..5e3dcde20c
--- /dev/null
+++ b/hub/apps/desktop/modernize/grant-identity-to-nonpackaged-apps-overview.md
@@ -0,0 +1,32 @@
+---
+title: Grant package identity by packaging with external location
+description: Overview of how to grant package identity to an unpackaged Win32 app so that you can use modern Windows features in that app.
+ms.date: 05/20/2025
+ms.topic: article
+keywords: windows 11, windows 10, desktop, sparse, package, identity, external, location, MSIX, Win32, Visual Studio
+ms.localizationpriority: medium
+---
+
+# Grant package identity by packaging with external location
+
+Many Windows features can be used by a desktop app only if that app has package identity at runtime.
+See [Features that require package identity](/windows/apps/desktop/modernize/modernize-packaged-apps).
+If you have an existing desktop app, with its own installer, then there's very little you need to
+change in order to benefit from package identity.
+
+Starting in Windows 10, version 2004, you can grant package identity to an app simply by building
+and registering a *package with external location* with your app. Packaging with external location
+allows you to register a simple identity package in your existing installer without changing how or
+where you install your application. You might be familiar with full MSIX packaging; this is a much
+lighter-weight option.
+
+You can [add an identity package to an existing Visual Studio project](/windows/apps/desktop/modernize/grant-identity-to-nonpackaged-apps-visual-studio) with the Windows Application Packaging Project and
+[Package with External Location](https://marketplace.visualstudio.com/items?itemName=WapProj-PackageWithExternalLocation.wapprojPackageWithExternalLocation) extension.
+This approach is recommended when there is a single application project that needs identity.
+The tooling provides a visual manifest editor, visual Resource Designer for localization, graphical
+wizard for creating and trusting self-signed certificates, automatic updating of application manifests,
+and PowerShell scripts to register and unregister the identity package for local testing.
+
+If you don't build with Visual Studio or want to bundle multiple application executables under a
+shared identity, you can
+[build an identity package manually](/windows/apps/desktop/modernize/grant-identity-to-nonpackaged-apps).
diff --git a/hub/apps/desktop/modernize/grant-identity-to-nonpackaged-apps-visual-studio.md b/hub/apps/desktop/modernize/grant-identity-to-nonpackaged-apps-visual-studio.md
new file mode 100644
index 0000000000..339534bb6e
--- /dev/null
+++ b/hub/apps/desktop/modernize/grant-identity-to-nonpackaged-apps-visual-studio.md
@@ -0,0 +1,267 @@
+---
+title: Grant package identity by packaging with external location in Visual Studio
+description: How to use Visual Studio to grant package identity to an unpackaged Win32 app so that you can use modern Windows features in that app.
+ms.date: 05/09/2025
+ms.topic: how-to
+keywords: windows 11, windows 10, desktop, sparse, package, identity, external, location, MSIX, Win32, Visual Studio
+ms.localizationpriority: medium
+---
+
+# Grant package identity by packaging with external location in Visual Studio
+
+For the motivations behind adding package identity, as well as the differences between building
+identity packages in Visual Studio and building them manually, see
+[Overview](/windows/apps/desktop/modernize/grant-identity-to-nonpackaged-apps-overview).
+
+This topic describes how to build and register an identity package by using Visual Studio.
+For info about building an identity package manually, see
+[Grant package identity by packaging with external location manually](/windows/apps/desktop/modernize/grant-identity-to-nonpackaged-apps).
+
+These are the steps (which this topic describes in detail) to build and register an identity package by using Visual Studio:
+
+1. [Install Visual Studio components](#install-visual-studio-components)
+2. [Add a Packaging Project to your solution](#add-a-packaging-project-to-your-solution)
+3. [Configure the Packaging Project for signing](#configure-the-packaging-project-for-signing)
+4. [Build and test the Packaging Project in Release Mode](#build-and-test-the-packaging-project-in-release-mode)
+5. [Register the identity package in your installer](#register-the-identity-package-in-your-installer)
+6. [Optional steps](#optional-steps)
+
+## Install Visual Studio components
+
+Creating an identity package in Visual Studio requires the **Windows Application Packaging Project**
+and the **Package with External Location** extension.
+
+Install the **Windows Application Packaging Project** components as described in
+[Required Visual Studio version and workload](/windows/msix/desktop/desktop-to-uwp-packaging-dot-net#required-visual-studio-version-and-workload).
+
+In Visual Studio, via the **Extensions** > **Manage Extensions** menu item,
+install the **Package with External Location** extension.
+
+## Add a Packaging Project to your solution
+
+To add a Packaging Project to your solution with a Project Reference to your application project,
+see [Set up the Windows Application Packaging Project in your solution](/windows/msix/desktop/desktop-to-uwp-packaging-dot-net#set-up-the-windows-application-packaging-project-in-your-solution).
+
+Enable packaging with external location by right-clicking the Packaging Project in Solution Explorer,
+navigating to the **External Location** tab provided by the **Package with External Location** extension,
+enabling the **Package with External Location** option, and saving the changes.
+
+Set the **Package name** and **Publisher display name** fields of the identity package by
+double-clicking `Package.appxmanifest` in the Packaging Project to open the visual manifest editor,
+navigating to the Packaging tab, and setting the **Package name** and **Publisher display name** fields
+to the desired values. See [Localization and Visual Assets](#localization-and-visual-assets) for
+scenarios where localization and images may be needed here.
+
+If you have a custom application manifest in your application project, then for info about
+synchronizing the values with the values from `Package.appxmanifest`, see
+[Add identity metadata to your desktop application manifests](/windows/apps/desktop/modernize/grant-identity-to-nonpackaged-apps#add-identity-metadata-to-your-desktop-application-manifests).
+The **Package with External Location** extension uses **App** for the **applicationId**.
+
+If you don't have a custom application manifest, then Visual Studio will produce the appropriate
+artifacts during the build process. .NET projects embed a manifest by default, which conflicts with
+the produced manifest artifacts. To resolve that, right-click the Project, open **Properties**,
+and in the **Application** tab under the **Manifest** section, change **Embed manifest with default settings**
+to **Create application without a manifest**.
+
+## Configure the Packaging Project for signing
+
+Generate a certificate for signing by walking through the **Publish** > **Create App Packages** wizard
+shown in [Create an app package using the packaging wizard](/windows/msix/package/packaging-uwp-apps#create-an-app-package-using-the-packaging-wizard).
+
+On the first screen, ensure that **Sideloading** is selected, and **Enable automatic updates** is unchecked.
+On the second screen, create a self-signed certificate if necessary, then click the **Trust** button
+to trust it in the Local Machine Trusted People certificate store. On the final screen,
+set **Generate app bundle** to *Never*, and click **Create** to complete the signing configuration.
+
+## Build and test the Packaging Project in Release Mode
+
+To avoid complications from Debug mode dependencies, set the Build configuration to Release mode,
+and build the Packaging Project.
+
+Building the Packaging Project produces a **PackageWithExternalLocation** folder in the build output.
+That folder contains the `MSIX` file representing the identity package, as well as `Install` and `Remove`
+PowerShell scripts to register and unregister the generated identity package locally for testing.
+
+The `Install` PowerShell script registers the generated identity package locally, and connects it
+with the `ExternalLocation` sibling folder for testing purposes. To test the application with identity,
+run the application executable from the `ExternalLocation` folder.
+
+To associate identity with your application in production, you'll need to ship the generated
+identity package with your application, and register it in your installer.
+
+## Register the identity package in your installer
+
+The last step to associate identity with your application is to register the identity package
+in your installer and associate it with your application's installation directory.
+
+### PowerShell
+
+Executing powershell.exe with the right parameters is the simplest way to register the package.
+The guidance differs for per-user installations vs. machine-wide installations.
+
+#### Per-User (PowerShell)
+
+To register the identity package during a per-user installation:
+
+```Console
+powershell.exe -NoLogo -NoProfile -NonInteractive -WindowStyle Hidden -ExecutionPolicy Bypass -Command "Add-AppxPackage -Path -ExternalLocation "
+```
+
+* Set `` to the absolute path of the signed identity package producedin the previous step
+(with the file name).
+* Set `` to the absolute path of your application's installation directory
+(without any executable names).
+
+To unregister the identity package during a per-user uninstallation:
+
+```Console
+powershell.exe -NoLogo -NoProfile -NonInteractive -WindowStyle Hidden -ExecutionPolicy Bypass -Command "Get-AppxPackage | Remove-AppxPackage"
+```
+
+* Set `` to the package name you defined in your identity package manifest
+(the **Name** attribute of the **Identity** element)
+
+#### Per-Machine (PowerShell)
+
+To register the identity package during a machine-wide installation:
+
+```Console
+powershell.exe -NoLogo -NoProfile -NonInteractive -WindowStyle Hidden -ExecutionPolicy Bypass -Command "Add-AppxPackage -Stage -ExternalLocation ; Add-AppxProvisionedPackage -Online -PackagePath "
+```
+
+* Set `` to the absolute path of the signed identity package produced in the previous step
+(with the file name).
+* Set `` to the absolute path of your application's installation directory
+(without any executable names).
+
+To unregister the identity package during a machine-wide uninstallation:
+
+```Console
+powershell.exe -NoLogo -NoProfile -NonInteractive -WindowStyle Hidden -ExecutionPolicy Bypass -Command "$packages = Get-AppxPackage ; foreach ($package in $packages) { Remove-AppxProvisionedPackage -PackageName $package.PackageFullName -Online }; foreach ($package in $packages) { Remove-AppxPackage -Package $package.PackageFullName -AllUsers }
+```
+
+* Set `` to the package name you defined in your identity package manifest
+(the **Name** attribute of the **Identity** element)
+
+### PackageManager APIs
+
+If you'd rather call OS APIs to register and unregister the identity package, the PackageManager API
+provides equivalent functionality to PowerShell. The guidance differs for per-user installations vs.
+machine-wide installations.
+
+Below are snippets that demonstrate the API. For production-ready code in C# and C++, see
+[Sample apps](#sample-apps).
+
+#### Per-User (PackageManager)
+
+The code listing below demonstrates registering the identity package by using the
+[**AddPackageByUriAsync**](/uwp/api/windows.management.deployment.packagemanager.addpackagebyuriasync)
+method and unregistering the identity package by using the
+[**RemovePackageAsync**](/uwp/api/windows.management.deployment.packagemanager.removepackageasync)
+method.
+
+```csharp
+using Windows.Management.Deployment;
+
+...
+
+// Register the identity package during install
+
+var externalUri = new Uri(externalLocation);
+var packageUri = new Uri(packagePath);
+
+var packageManager = new PackageManager();
+
+var options = new AddPackageOptions();
+options.ExternalLocationUri = externalUri;
+
+await packageManager.AddPackageByUriAsync(packageUri, options);
+
+...
+
+// Unregister the identity package during uninstall
+
+var packageManager = new PackageManager();
+
+var packages = packageManager.FindPackagesForUserWithPackageTypes("", "", PackageType.Main);
+foreach (var package in packages)
+{
+ await packageManager.RemovePackageAsync(package.Id.FamilyName);
+}
+```
+
+Note the below important details about this code:
+
+* Set `externalLocation` to the absolute path of your application's installation directory
+(without any executable names)
+* Set `packagePath` to the absolute path of the signed identity package produced in the previous step
+(with the file name)
+* The `` can be found in the visual manifest editor in Visual Studio
+under **Packaging** > **Package family name**.
+
+#### Per-Machine (PackageManager)
+
+The code listing below demonstrates registering the identity package by using the
+[**StagePackageByUriAsync**](/uwp/api/windows.management.deployment.packagemanager.stagepackagebyuriasync) and
+[**ProvisionPackageForAllUsersAsync**](/uwp/api/windows.management.deployment.packagemanager.provisionpackageforallusersasync) methods and unregistering the identity package by using the
+[**RemovePackageAsync**](/uwp/api/windows.management.deployment.packagemanager.removepackageasync) method.
+
+```csharp
+// Register the identity package during install
+
+var externalUri = new Uri(externalLocation);
+var packageUri = new Uri(packagePath);
+
+var packageManager = new PackageManager();
+
+var options = new StagePackageOptions();
+options.ExternalLocationUri = externalUri;
+
+await packageManager.StagePackageByUriAsync(packageUri, options);
+await packageManager.ProvisionPackageForAllUsersAsync(packageFamilyName);
+
+...
+
+// Unregister the identity package during uninstall
+
+var packageManager = new PackageManager();
+var packages = packageManager.FindPackagesForUserWithPackageTypes("", "", PackageType.Main);
+foreach (var package in packages)
+{
+ await packageManager.DeprovisionPackageForAllUsersAsync(package.Id.FamilyName);
+ await packageManager.RemovePackageAsync(package.Id.FamilyName, RemovalOptions.RemoveForAllUsers);
+}
+```
+
+Note the below important details about this code:
+
+* Set `externalLocation` to the absolute path of your application's installation directory
+(without any executable names)
+* Set `packagePath` to the absolute path of the signed identity package produced in the previous step
+(with the file name)
+* The `` can be found in the visual manifest editor in Visual Studio
+under **Packaging** > **Package family name**.
+
+## Sample apps
+
+For fully functional C# and C++ apps that demonstrate how to register an identity package, see the [PackageWithExternalLocation](https://aka.ms/sparsepkgsample) samples.
+
+## Optional steps
+
+### Localization and Visual Assets
+
+Some features that understand package identity might result in strings and images from your
+identity package manifest being displayed in the Windows OS. For example:
+
+* An application that uses camera, microphone, or location APIs will have a dedicated control toggle
+in Windows Privacy Settings along with a brokered consent prompt that users can use to grant or deny
+access to those sensitive resources.
+* An application that registers a share target will show up in the share dialog.
+
+To localize the strings in the identity package manifest, see
+[Localize the manifest](/windows/uwp/app-resources/using-mrt-for-converted-desktop-apps-and-games#phase-1-localize-the-manifest).
+
+When providing paths to images in the `VisualElements` attributes in the identity package manifest,
+the provided paths should be relative paths within your application's installation directory that will
+resolve to a .png, .jpg, or .jpeg image. The attribute names indicate the expected dimensions of the
+images (150x150 and 40x40).
diff --git a/hub/apps/desktop/modernize/grant-identity-to-nonpackaged-apps.md b/hub/apps/desktop/modernize/grant-identity-to-nonpackaged-apps.md
index 5c1f6513d5..b400743600 100644
--- a/hub/apps/desktop/modernize/grant-identity-to-nonpackaged-apps.md
+++ b/hub/apps/desktop/modernize/grant-identity-to-nonpackaged-apps.md
@@ -1,75 +1,46 @@
---
-description: Learn how to grant package identity to an unpackaged app so that you can use modern Windows features in that app.
-title: Grant package identity by packaging with external location
-ms.date: 10/04/2022
-ms.topic: article
-keywords: windows 10, desktop, package, identity, MSIX, Win32
+title: Grant package identity by packaging with external location manually
+description: Learn how to grant package identity to an unpackaged Win32 app so that you can use modern Windows features in that app.
+ms.date: 10/13/2023
+ms.topic: how-to
+keywords: windows 10, desktop, sparse, package, identity, external, location, MSIX, Win32
ms.localizationpriority: medium
ms.custom: RS5
---
-# Grant package identity by packaging with external location
+# Grant package identity by packaging with external location manually
-If you have an existing desktop app, with its own installer, there's very little you need to change in order to benefit from [package identity](/uwp/schemas/appxpackage/uapmanifestschema/element-identity).
+For the motivations behind adding package identity, as well as the differences between building
+identity packages in Visual Studio and building them manually, see
+[Overview](/windows/apps/desktop/modernize/grant-identity-to-nonpackaged-apps-overview).
-Many Windows extensibility features—including background tasks, notifications, live tiles, and share targets—can be used by a desktop app only if that app has package identity at runtime. That's because the operating system (OS) needs to be able to identify the caller of the corresponding API. See [Features that require package identity](./modernize-packaged-apps.md).
+This topic describes how to build and register an identity package manually.
+For info about building an identity package in Visual Studio, see
+[Grant package identity by packaging with external location in Visual Studio](/windows/apps/desktop/modernize/grant-identity-to-nonpackaged-apps-visual-studio).
-Only packaged apps have package identity at runtime. For definitions of apps that are packaged, unpackaged, and packaged with external location, see [Deployment overview](../../package-and-deploy/index.md).
+These are the steps (which this topic describes in detail) to build and register an identity package manually:
-* In Windows 10, version 2004, and earlier the only way to grant package identity to an app is to package it in a signed MSIX package (see [Building an MSIX package from your code](/windows/msix/desktop/source-code-overview)). In that case, identity is specified in the package manifest, and identity registration is handled by the MSIX deployment pipeline based on the information in the manifest. All content referenced in the package manifest is present inside the MSIX package.
-* But starting in Windows 10, version 2004, you can grant package identity to an app simply by building and registering a *package with external location* with your app. Doing so turns it into a packaged app; specifically, *a packaged app with external location*. That's because some desktop apps aren't yet ready for all of their content to be present inside an MSIX package. So this support enables such apps to have package identity; thereby being able to use Windows extensibility features that require package identity. For more background info, see the blog post [Identity, Registration and Activation of Non-packaged Win32 Apps](https://blogs.windows.com/windowsdeveloper/2019/10/29/identity-registration-and-activation-of-non-packaged-win32-apps/).
+1. [Create a package manifest for the identity package](#create-a-package-manifest-for-the-identity-package)
+2. [Build and sign the identity package](#build-and-sign-the-identity-package)
+3. [Add identity metadata to your desktop application manifests](#add-identity-metadata-to-your-desktop-application-manifests)
+4. [Register the identity package in your installer](#register-the-identity-package-in-your-installer)
+5. [Optional steps](#optional-steps)
-To build and register a package with external location (which grants package identity to your app), follow these steps.
+## Create a package manifest for the identity package
-1. [Create a package manifest for the package with external location](#create-a-package-manifest-for-the-package-with-external-location)
-2. [Build and sign the package with external location](#build-and-sign-the-package-with-external-location)
-3. [Add the package identity metadata to your desktop application manifest](#add-the-package-identity-metadata-to-your-desktop-application-manifest)
-4. [Register your package with external location at run time](#register-your-package-with-external-location-at-run-time)
-
-## Important concepts
-
-The following features enable unpackaged desktop apps to acquire package identity.
-
-### Package with external location
-
-A *package with external location* contains a package manifest, but no other app binaries and content. The manifest of a package with external location can reference files outside the package in a predetermined external location. As mentioned above, this support enables apps that aren't yet ready for all of their content to be present inside an MSIX package to use Windows extensibility features that require package identity.
-
-> [!NOTE]
-> A desktop app that uses a package with external location doesn't receive some benefits of being fully deployed via an MSIX package. These benefits include tamper protection, installation in a locked-down location, and full management by the OS at deployment, run time, and uninstall.
-
-### Allowing external content
-
-To support packages with external location, the package manifest schema now supports an optional [**uap10:AllowExternalContent**](/uwp/schemas/appxpackage/uapmanifestschema/element-uap10-allowexternalcontent) element under the [**Properties**](/uwp/schemas/appxpackage/uapmanifestschema/element-properties) element. This allows your package manifest to reference content outside the package, in a specific location on disk.
-
-For example, if you have your existing unpackaged desktop app that installs the app executable and other content in C:\Program Files\MyDesktopApp\, you can create a package with external location that includes the **uap10:AllowExternalContent** element in the manifest. During the install process for your app, or the first time your app runs, you can install the package with external location and declare C:\Program Files\MyDesktopApp\ as the external location your app will use.
-
-## Create a package manifest for the package with external location
-
-Before you can build a package with external location, you must first create a [package manifest](/uwp/schemas/appxpackage/appx-package-manifest) (a file named AppxManifest.xml) that declares package identity metadata for your desktop app and other required details. The easiest way to create a package manifest for the package with external location is to use the example below and customize it for your app by using the [schema reference](/uwp/schemas/appxpackage/uapmanifestschema/schema-root).
-
-Make sure the package manifest includes these items:
-
-* An [**Identity**](/uwp/schemas/appxpackage/uapmanifestschema/element-identity) element that describes the identity attributes for your desktop app.
-* An [**uap10:AllowExternalContent**](/uwp/schemas/appxpackage/uapmanifestschema/element-uap10-allowexternalcontent) element under the [**Properties**](/uwp/schemas/appxpackage/uapmanifestschema/element-properties) element. This element should be assigned the value `true`, which allows your package manifest to reference content outside the package, in a specific location on disk. In a later step, you'll specify the path of the external location when you register your package with external location from code that runs in your installer or your app. Any content that you reference in the manifest that isn’t located in the package itself should be installed to the external location.
-* The **MinVersion** attribute of the [**TargetDeviceFamily**](/uwp/schemas/appxpackage/uapmanifestschema/element-targetdevicefamily) element should be set to `10.0.19000.0` or a later version.
-* The **TrustLevel=mediumIL** and **RuntimeBehavior=Win32App** attributes of the [**Application**](/uwp/schemas/appxpackage/uapmanifestschema/element-application) element declare that the desktop app associated with the package with external location will run similar to a standard unpackaged desktop app, without registry and file system virtualization and other run time changes.
-
-The following example shows the complete contents of a package with external location manifest (`AppxManifest.xml`). This manifest includes a `windows.sharetarget` extension, which requires package identity.
+The first step to creating an identity package is to create a package manifest based on the below template.
+This is an MSIX manifest but is only used for identity and doesn't alter the app's runtime behavior.
```xml
-
-
+ xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities">
+
- ContosoPhotoStore
+ Contoso PhotoStoreContosoAssets\storelogo.pngtrue
@@ -78,7 +49,7 @@ The following example shows the complete contents of a package with external loc
-
+
@@ -86,56 +57,98 @@ The following example shows the complete contents of a package with external loc
-
-
-
-
-
-
-
-
- .jpg
- .png
- .gif
-
- StorageItems
- Bitmap
-
-
-
+
```
-## Build and sign the package with external location
-
-After you create your package manifest, build the package with external location by using the [MakeAppx.exe tool](/windows/msix/package/create-app-package-with-makeappx-tool) in the Windows SDK. Because the package with external location doesn’t contain the files referenced in the manifest, you must specify the `/nv` option, which skips semantic validation for the package.
-
-The following example demonstrates how to create a package with external location from the command line.
+Note the below important details about this manifest:
+
+* Fill in the `Identity` element attributes with the details of your application
+ * `Name` is the desired name of the identity package
+ * `Publisher` must match the `Subject` of the certificate used to sign the application
+ * `Version` is the desired version of the identity package. A common practice is to align the
+ identity package version with the application version. You will not be able to register a version
+ of an identity package on a system if that version of the package is already registered.
+ You must first unregister the existing package to reinstall a package with the same version.
+ * `ProcessorArchitecture` should be `neutral` as shown so the identity package works across all
+ architectures (x86, x64, and ARM64)
+* Fill in the `DisplayName` and `PublisherDisplayName` elements with the details of your application
+ * Unless you add additional features to the manifest beyond simple identity, these values
+ are not displayed anywhere
+* Update the `Logo` element to a relative path within your application's installation directory
+that will resolve to a .png, .jpg, or .jpeg image
+* Ensure the `AllowExternalContent` element is set to `true` as shown which enables reusing your
+existing installer
+* Set `TargetDeviceFamily` `MinVersion` and `MaxVersionTested` per below:
+ * Set `MinVersion` to `10.0.19041.0` as shown for maximum reach and uniformity across Windows 10
+ and Windows 11 OS versions
+ * Set `MinVersion` to `10.0.26100.0` to restrict the identity package to Windows 11, version 24H2
+ and above
+ * Set `MaxVersionTested` to `10.0.26100.0` as shown
+ * Note: The `AllowExternalContent` feature used here was introduced in Windows build 10.0.19041.0.
+ If your application runs further downlevel than that, you should perform an OS version check in your
+ installer and not register the identity package on OS versions earlier than 10.0.19041.0. See
+ [Register the identity package in your installer](#register-the-identity-package-in-your-installer).
+* Ensure the `runFullTrust` and `unvirtualizedResources` capabilities are declared as shown for
+Win32 compatibility
+* Add an `Application` element as shown for each executable associated with your application
+ * Ensure `TrustLevel` is `mediumIL` and `RuntimeBehavior` is `win32App` as shown for Win32 compatibility
+* The `VisualElements` child element is required, but the `AppListEntry="none"` attribute ensures
+the identity package isn't shown among installed apps
+ * Update the `DisplayName` and `Description` attributes with relevant details and leave the other
+ attributes as shown (the referenced image paths do not need to resolve)
+ * See [Localization and Visual Assets](#localization-and-visual-assets) for scenarios where
+ localization and images may be needed here.
+
+The identity package created from this manifest will be connected to your application's
+installation directory when you register the package in a later step.
+
+## Build and sign the identity package
+
+After you create your identity package manifest, build the identity package using the
+[MakeAppx.exe tool](/windows/msix/package/create-app-package-with-makeappx-tool) in the Windows SDK.
```Console
-MakeAppx.exe pack /d /p