wpf-devexpress-layout-management

Build WPF layouts with DevExpress DockLayoutManager, LayoutControl, and tile or flow containers.

Updated Dec 11, 2025
One-click install
npx skills add https://github.com/AleksaRistic216/dotnet-playground --skill wpf-devexpress-layout-management-aleksaristic216
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: wpf-devexpress-layout-management
Source: https://github.com/AleksaRistic216/dotnet-playground/tree/main/.github/skills/wpf/wpf-devexpress-layout-management
Command: npx skills add https://github.com/AleksaRistic216/dotnet-playground --skill wpf-devexpress-layout-management-aleksaristic216

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires DevExpress.Wpf.Docking, DevExpress.Wpf.LayoutControl, and includes references (resource) components.

What problem does it solve? Choosing and correctly implementing one of DevExpress's six WPF layout controls is error-prone: similar names (DockLayoutManager vs DockLayoutControl), two different LayoutGroup classes in different namespaces, and differing persistence APIs cause broken layouts and failed save/restore. This Skill guides control selection, XAML construction, and layout persistence. ## Core Features & Use Cases - Control picker: Decision guidance across DockLayoutManager (Visual Studio-style docking/MDI), LayoutControl, DataLayoutControl, TileLayoutControl, FlowLayoutControl, and DockLayoutControl. - Building rules: XAML patterns for LayoutGroup nesting, LayoutItem labels, DataAnnotations-driven form generation, tile sizes and groups, flow breaks, and edge docking. - Layout persistence: Save/restore via SaveLayoutToXml for DockLayoutManager and WriteToXML/ReadFromXML for the LayoutControl family, including RestoreLayoutOptions and BindableName for MVVM. - Use Case: Build a settings form by decorating a POCO with [Display(GroupName = "{Tabs}/Contact")] attributes and binding it to a DataLayoutControl, then persist user customizations on window close. ## Quick Start Ask the assistant to create a WPF data-entry form using DevExpress LayoutControl with labeled text editors grouped in a GroupBox.

Frequently Asked Questions about wpf-devexpress-layout-management

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I choose between DockLayoutManager and DockLayoutControl in WPF?

Use DockLayoutManager for Visual Studio-style shells with floating panels, MDI document tabs, auto-hide, and a customization window. Use DockLayoutControl only for simple edge docking (Top/Left/Right/Bottom/Client) inside a single panel without detachable panels.

How do I auto-generate a WPF form from a C# class with DevExpress?

Bind the class to DataLayoutControl.CurrentItem and decorate properties with System.ComponentModel.DataAnnotations attributes. Display.GroupName controls groups and tabs (e.g., "{Tabs}/Contact"), while DataType selects editors like phone masks or currency.

What is the difference between LayoutControl and DataLayoutControl?

LayoutControl uses hand-written XAML with LayoutGroup and LayoutItem for bespoke forms with auto-aligned labels. DataLayoutControl generates the entire form from a POCO's DataAnnotations attributes, choosing editors automatically by property type.

Why is LayoutGroup ambiguous in DevExpress WPF XAML?

LayoutGroup exists in both the dxdo (docking) and dxlc (layout-control) namespaces as different types. Always use the prefixed form, dxdo:LayoutGroup for DockLayoutManager containers and dxlc:LayoutGroup for LayoutControl groups.

Why does my saved DevExpress layout not restore correctly?

Restore fails when panels or items lack unique names. Set x:Name on every panel and layout item, or BindableName in MVVM. For DockLayoutManager, also check RestoreLayoutOptions.AddNewPanels and RemoveOldPanels settings.

Does DevExpress WPF layout management support .NET 8?

Yes, it supports .NET 6/7/8+ targeting Windows (net8.0-windows with UseWPF=true) and .NET Framework 4.6.2+. A valid DevExpress license is required, and all DevExpress packages must share one version.