wpf-405568-dotnet-core-support-migrate-from-wpf-to-blazor.md
When you migrate a WPF application to ASP.NET Core Blazor, you can reuse the data layer and business logic, but you need to reconstruct the UI from scratch. This article contains the following information:
The DevExpress Blazor Component Suite ships with components and development libraries for Blazor Server, Blazor WebAssembly, and Blazor Hybrid hosting models. The suite includes a comprehensive set of UI controls, such as Data Grid, Pivot Grid, Scheduler, Chart, Data Editors, and Reporting. Review the complete list of available components in our documentation.
DevExpress Blazor Components can be purchased as part of the following DevExpress subscriptions: ASP.NET and Blazor (includes DevExtreme), DXperience , and Universal.
Run DemoDownload: Free 30-Day Trial
For information on how to migrate your project to a different platform, review the following resources:
Most of our product lines contain similar component sets. Regardless of the platform, developers usually require the same UI controls for their business apps and websites.
Tables below list DevExpress WPF components and their DevExpress Blazor equivalents (or ways to implement similar functionality).
| WPF Component | Blazor Component |
|---|---|
| GridControl | DxGrid or DxTreeList |
| TreeListControl | DxTreeList |
| PropertyGridControl | — |
| GanttControl | Consider integrating DevExtreme Gantt. |
Refer to the following help topics for information on binding DevExpress Blazor controls to data:
If our standard data source bindings do not meet your business requirements, you can implement your own data provider. Refer to the following example for implementation details: Blazor Grid - Custom Data Source Binding using Entity Framework Core.
WPF Grid and TreeList controls use the same internal export engine as their Blazor counterparts. Public API names may differ. Refer to the following documentation section for Blazor equivalents:
| WPF Component | Blazor Component |
|---|---|
| ListBoxEdit | DxListBox<TData, TValue> |
| ComboBoxEdit, AutoSuggestEdit | DxComboBox<TData, TValue> |
| LookUpEdit (SearchLookUpEdit, MultiSelectLookUpEdit) | Based on required functionality, use one of the following options: |
| WPF Component | Blazor Component |
|---|---|
| ButtonEdit | Command buttons. |
| BrowsePathEdit | — |
| CheckEdit | DxCheckBox<T> |
| MemoEdit | DxMemo embedded into DxDropDownBox. |
| SpinEdit | DxSpinEdit<T> |
| TextEdit | DxTextBox |
| ToggleSwitchEdit | DxCheckBox<T> in switch mode. |
| PasswordBoxEdit | DxTextBox in password mode. |
| WPF Component | Blazor Component |
|---|---|
| DateEdit | DxDateEdit<T> |
| DateNavigator | DxCalendar<T> |
| DateRangeControl | DxDateRangePicker<T> |
| TimePicker | DxTimeEdit<T> |
| WPF Component | Blazor Component |
|---|---|
| ImageEdit | [](https://www.w3schools.com/html/html_images.asp) tag[1]. Editing operations are unavailable. |
| PopupImageEdit | [](https://www.w3schools.com/html/html_images.asp) tag[1] embedded into DxDropDownBox. |
| BrushEdit, ColorEdit | DxColorPalette |
| PopupBrushEdit, PopupColorEdit | DxColorPalette embedded into DxDropDownBox (see Demo). |
| WPF Component | Blazor Component |
|---|---|
| SimpleButton | DxButton |
| DropDownButton | DxDropDownButton |
| SplitButton | DxSplitButton |
| WPF Component | Blazor Component |
|---|---|
| AccordionControl | DxAccordion |
| NavBarControl | DxAccordion or DxTreeView |
| OfficeNavigationBar | DxMenu |
| TileNavPane | — |
| TileBar | — |
| TreeViewControl | DxTreeView |
| Wizard | — |
| HamburgerMenu | DxMenu in a mobile view with a horizontal orientation. |
| WPF Component | Blazor Component |
|---|---|
| BarManager | Replicate each Bar and its items with a DxToolbar or DxMenu. |
| ToolBarControl, MainMenuControl | DxToolbar |
| RibbonControl | DxRibbon |
| DXContextMenu (PopupMenu, PopupControlContainer) | DxContextMenu or DxDropDown |
| WPF Component | Blazor Component |
|---|---|
| ProgressBarEdit | DxProgressBar |
| SparklineEdit | DxSparkline |
| TrackBarEdit, Range Control | Use DxRangeSelector if you need two sliders. For one slider, consider integrating DevExtreme Slider. |
| RatingEdit | — |
| WPF Component | Blazor Component |
|---|---|
| HyperlinkEdit | <a> tag |
| FlyoutControl | DxFlyout |
| Splash Screens, Wait Indicator | DxLoadingPanel, DxWaitIndicator |
| LoadingDecorator | DxLoadingPanel |
| Badge | Consider integrating Bootstrap Badge. |
| StepProgressBar | — |
| BarCodeEdit | Generate bar codes using Office File API[2] and display them within the `` tag. |
| Calculator, PopupCalcEdit | — |
| WPF Component | Blazor Component |
|---|---|
| RichEditControl | DxRichEdit |
| SchedulerControl | DxScheduler |
| SpreadsheetControl | — |
| SpellChecker | — |
| Office File API | Use the same APIs[2]. |
| WPF Component | Blazor Component |
|---|---|
| PdfViewerControl | DxPdfViewer |
| PivotGridControl | DxPivotTable |
| Visual Studio Report Designer | DxReportViewer |
| End-User Report Designer | DxReportDesigner |
| Dashboard Viewer, Dashboard Designer | Blazor Dashboard (includes both Designer and Viewer) |
| WPF Component | Blazor Component |
|---|---|
| Charts Suite | DxChart<T>, DxPieChart<T>, DxPolarChart<T> |
| DiagramDesignerControl | Consider integrating DevExtreme Diagram. |
| Gauge Controls | DxBarGauge. Consider integrating DevExtreme Circular Bar Gauge (see Example). |
| MapControl | DxMap |
| TreeMapControl | Consider integrating DevExtreme TreeMap. |
| SunburstControl | — |
| SankeyDiagramControl | DxSankey |
| HeatmapControl | — |
| WPF Concept | Blazor Concept |
|---|---|
| Application Themes, Lightweight Themes | Styling and Themes |
| MVVM Support | Although you can implement the MVVM pattern in your Blazor app, this approach is not common for Blazor. Refer to online resources to choose the best option based on your requirements. |
| Input Validation | Validate Input |
| Masked Input | Masks |
| AI-powered Extensions for WPF | DevExpress AI-powered Extensions for Blazor |
Blazor Grid and TreeList use a similar column editor architecture that allows you to generate editors based on data field type. You can also specify custom cell templates, that is, display custom components or HTML markup in cells. Refer to the following help topics for more information:
WPF Bar Manager and Ribbon Control ship with a specially designed editor container item - BarEditItem. In Blazor, the editor integration technique depends on the container control. Use the following resources to find instructions:
If you have additional technical questions about migration between UI platforms within the DevExpress ecosystem, feel free to contact us: DevExpress Support Center.
Footnotes
Example: ``.
You need a DevExpress Office File API Subscription or DevExpress Universal Subscription license to use this library in production code.