You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: hub/apps/desktop/modernize/index.md
+3-26Lines changed: 3 additions & 26 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,7 @@
2
2
description: Add modern XAML user interfaces, create MSIX packages, and incorporate other modern components into your desktop application.
3
3
title: Modernize your desktop apps for Windows
4
4
ms.topic: article
5
-
ms.date: 01/28/2026
5
+
ms.date: 02/27/2026
6
6
ms.localizationpriority: medium
7
7
---
8
8
@@ -61,39 +61,16 @@ For more information, see [Use MSIX framework packages dynamically from your des
61
61
62
62
For more information, see [What's new in .NET 10](/dotnet/core/whats-new/dotnet-10/overview).
63
63
64
-
## Host WinRT XAML controls (XAML Islands)
64
+
## Host WinUI XAML controls (XAML Islands)
65
65
66
-
Starting with Windows 10, version 1903, you can add [UWP XAML controls](/windows/uwp/design/controls-and-patterns/controls-by-function) directly to any UI element in a WPF, Windows Forms, or C++ desktop app that is associated with a window handle (HWND). This means that you can fully integrate the latest UWP features such as [Windows Ink](/windows/uwp/design/input/pen-and-stylus-interactions) and controls that support the [Fluent Design System](/windows/uwp/design/fluent-design-system/index) into windows and other display surfaces in your desktop apps. This developer scenario is sometimes called *XAML islands*.
67
-
68
-
For more information, see [WinRT XAML controls in desktop apps](xaml-islands/xaml-islands.md)
69
-
70
-
## Use the Visual layer in desktop apps
71
-
72
-
You can now use Windows Runtime APIs in non-UWP desktop apps to enhance the look, feel, and functionality of your WPF, Windows Forms, and C++ desktop apps, and take advantage of the latest Windows UI features that are only available via UWP. This is useful when you need to create custom experiences that go beyond the built-in WinRT XAML controls you can host by using XAML Islands.
66
+
You can add [WinUI XAML controls](/windows/uwp/design/controls-and-patterns/controls-by-function) directly to any UI element in a WPF, Windows Forms, or C++ desktop app that is associated with a window handle (HWND). This means that you can fully integrate the latest WinUI features and controls that support the [Fluent Design System](../../design/index.md) into windows and other display surfaces in your desktop apps. This developer scenario is sometimes called *XAML islands*.
73
67
74
68
For more information, see [Modernize your desktop app using the Visual layer](ui/visual-layer-in-desktop-apps.md).
75
69
76
70
## Additional features available to apps with package identity
77
71
78
72
Some modern Windows experiences are available only to desktop apps that have [package identity](/uwp/schemas/appxpackage/uapmanifestschema/element-identity) at runtime. These features include certain Windows Runtime APIs, package extensions, and UWP components. For more info, see [Features that require package identity](modernize-packaged-apps.md).
79
73
80
-
<aid="desktop-uwp-controls"></a>
81
-
82
-
## WinRT XAML controls optimized for desktop apps
83
-
84
-
Whether you're building a UWP app that exclusively targets the desktop device family or you want to use WinRT XAML controls in a WPF, Windows Forms, or C++ desktop app, the following new and updated WinRT XAML controls are designed to offer desktop-optimized experiences with the [Fluent Design System](/windows/uwp/design/fluent-design-system/index). These controls were introduced in Windows 10, version 1809 (the October 2018 Update, or version 10.0.17763).
85
-
86
-
| Control | Description |
87
-
|------ |--------------|
88
-
|[MenuBar](/windows/uwp/design/controls-and-patterns/menus#create-a-menu-bar)| Provides a quick and simple way to expose a set of commands for apps that might need more organization or grouping than a **CommandBar** allows. |
89
-
|[DropDownButton](/windows/uwp/design/controls-and-patterns/buttons#create-a-drop-down-button)| Shows a chevron as a visual indicator that it has an attached flyout that contains more options. |
90
-
|[SplitButton](/windows/uwp/design/controls-and-patterns/buttons#create-a-split-button)| Provides a button has two parts that can be invoked separately. One part behaves like a standard button and invokes an immediate action. The other part invokes a flyout that contains additional options that the user can choose from.|
91
-
|[ToggleSplitButton](/windows/uwp/design/controls-and-patterns/buttons#create-a-toggle-split-button)| Provides a button has two parts that can be invoked separately. One part behaves like a toggle button that can be on or off. The other part invokes a flyout that contains additional options that the user can choose from. |
92
-
|[CommandBarFlyout](/windows/uwp/design/controls-and-patterns/command-bar-flyout)| Lets you show common user tasks in the context of an item on your UI canvas. |
93
-
|[ComboBox](/windows/uwp/design/controls-and-patterns/combo-box#make-a-combo-box-editable)| You can now make a combo box editable so the user can enter values that aren't listed in the control. |
94
-
|[TreeView](/windows/uwp/design/controls-and-patterns/tree-view)| You can now configure a tree view to enable data binding, item templates, and drag and drop. |
95
-
|[DataGridView](/windows/communitytoolkit/controls/datagrid)| Provides a flexible way to display a collection of data in rows and columns. This control is available in the [Windows Community Toolkit](/windows/uwpcommunitytoolkit/). |
Copy file name to clipboardExpand all lines: uwp/xaml-islands/host-custom-control-with-xaml-islands-cpp.md
+8-8Lines changed: 8 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -67,17 +67,17 @@ Next, add a **UWP (C++/WinRT)** app project to your solution and make some confi
67
67
68
68
4. Right-click the **MyUWPApp** node and select **Properties**. On the **Common Properties** -> **C++/WinRT** page, set the **Verbosity** property to **normal** and then click **Apply**. When you are done, the properties page should look like this.
69
69
70
-

70
+

71
71
72
72
5. On the **Configuration Properties** -> **General** page of the properties window, set **Configuration Type** to **Dynamic Library (.dll)**, and then click **OK** to close the properties window.
73
73
74
-

74
+

75
75
76
76
6. Add a placeholder executable file to the **MyUWPApp** project. This placeholder executable file is required for Visual Studio to generate the required project files and properly build the project.
77
77
78
78
1. In **Solution Explorer**, right-click the **MyUWPApp** project node and select **Add** -> **New Item**.
79
79
2. In the **Add New Item** dialog, select **Utility** in the left page, and then select **Text File (.txt)**. Enter the name **placeholder.exe** and click **Add**.
80
-

80
+

81
81
3. In **Solution Explorer**, select the **placeholder.exe** file. In the **Properties** window, make sure the **Content** property is set to **True**.
82
82
4. In **Solution Explorer**, right-click the **Package.appxmanifest** file in the **MyUWPApp** project, select **Open With**, and select **XML (Text) Editor**, and click **OK**.
83
83
5. Find the **<Application>** element and change the **Executable** attribute to the value `placeholder.exe`. When you are done, the **<Application>** element should look similar to this.
@@ -135,10 +135,10 @@ In this section, you'll update the solution that contains both projects to confi
135
135
5. Repeat the previous step to add the **Solution.props** file to the **MyUWPApp** project in the **Property Manager** window.
136
136
6. Close the **Property Manager** window.
137
137
7. Confirm that the property sheet changes were saved properly. In **Solution Explorer**, right-click the **MyDesktopWin32App** project and choose **Properties**. Click **Configuration Properties** -> **General**, and confirm that the **Output Directory** and **Intermediate Directory** properties have the values you added to the **Solution.props** file. You can also confirm the same for the **MyUWPApp** project.
138
-

138
+

139
139
140
140
8. In **Solution Explorer**, right-click the solution node and choose **Project Dependencies**. In the **Projects** drop-down, make sure that **MyDesktopWin32App** is selected, and select **MyUWPApp** in the **Depends On** list.
141
-

141
+

142
142
143
143
9. Click **OK**.
144
144
@@ -306,7 +306,7 @@ You can package the app in an [MSIX package](/windows/msix) for deployment. MSIX
306
306
1. Add a new [Windows Application Packaging Project](/windows/msix/desktop/desktop-to-uwp-packaging-dot-net) to your solution. As you create the project, name it **MyDesktopWin32Project** and select **Windows 10, version 1903 (10.0; Build 18362)** for both the **Target version** and **Minimum version**.
307
307
308
308
2. In the packaging project, right-click the **Applications** node and choose **Add reference**. In the list of projects, select the check box next to the **MyDesktopWin32App** project and click **OK**.
309
-

309
+

310
310
311
311
3. For info about distributing/deploying the package, see [Manage your MSIX deployment](/windows/msix/desktop/managing-your-msix-deployment-overview).
312
312
@@ -373,7 +373,7 @@ Next, update the **MyDesktopWin32App** project to define a macro for additional
373
373
374
374
5. Right-click the **MyDesktopWin32App** project, select **Properties**, and expand **Manifest Tool** -> **Input and Output** in the left pane. Set the **DPI Awareness** property to **Per Monitor High DPI Aware**. If you do not set this property, you may encounter a manifest configuration error in certain high DPI scenarios.
375
375
376
-

376
+

377
377
378
378
6. Click **OK** to close the **Property Pages** dialog.
379
379
@@ -579,7 +579,7 @@ This section demonstrates how to add a WinRT XAML control from the WinUI for UWP
579
579
580
580
Run the solution and confirm that **MyDesktopWin32App** opens with the following window.
581
581
582
-

582
+

Copy file name to clipboardExpand all lines: uwp/xaml-islands/host-custom-control-with-xaml-islands.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -340,7 +340,7 @@ The following instructions show you how to package the all the components in the
340
340
341
341
If you're hosting a custom control that contains a control from the WinUI library, you may encounter a problem where the control cannot be loaded in a packaged app and debugging the code shows the following error.
342
342
343
-

343
+

344
344
345
345
To resolve this error, copy the **App.xbf** file from the build output folder of the WPF project to the **\AppX\\<WPF project\>** build output folder of the packaging project.
0 commit comments