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.