wpf-devexpress-tree-list

Build WPF applications with the DevExpress TreeListControl for hierarchical data display and editing.

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

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires DevExpress.Wpf.Grid.Core, DevExpress.Wpf.Grid, DevExpress.Wpf.Printing, and includes references (resource) components.

What problem does it solve? Displaying and editing hierarchical data in WPF requires more than the standard TreeView — developers need multi-column trees with sorting, filtering, summaries, validation, and drag-and-drop, plus guidance on choosing between self-referential, hierarchical, and unbound binding modes. ## Core Features & Use Cases - Three Binding Strategies: Bind flat self-referential data with KeyFieldName/ParentFieldName, nested collections via ChildNodesPath or IChildNodesSelector, or build unbound trees programmatically with TreeListNode. - Full Grid Feature Surface: Sorting, filtering, summaries, in-place editors, edit forms, validation with ValidateNodeCommand, conditional formatting, multi-node selection, and printing/export to XLSX/PDF/HTML. - Tree-Specific Interactions: Expand/collapse control, node checkboxes, drag-and-drop reparenting with DropPosition.Inside, auto-expand on drag, and IndentNode/OutdentNode restructuring. - Use Case: Build an org chart from a flat employee table where each record has ID and ParentID — the TreeListControl renders the hierarchy with editable columns, summaries, and drag-based reorganization. ## Quick Start Ask the AI to add a DevExpress TreeListControl bound to a self-referential employee list with ID and ParentID fields in a .NET 8 WPF project.

Frequently Asked Questions about wpf-devexpress-tree-list

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

FAQPage Schema
How do I bind a WPF TreeListControl to self-referential data?

Set ItemsSource to your flat collection and configure TreeListView with KeyFieldName and ParentFieldName pointing to your ID and parent ID fields. The root record's parent value must not match any other record's key; using a nullable int with null for the root is the safest pattern.

What is the difference between TreeListControl and TreeListView in DevExpress WPF?

TreeListControl is the standalone control holding columns and data binding, while TreeListView is its View class owning KeyFieldName, ParentFieldName, and node expansion settings. The same TreeListView can also serve as a View inside a regular GridControl.

Does DevExpress TreeList support .NET 8 and .NET Framework?

Yes, TreeListControl supports .NET 6/7/8+ targeting net8.0-windows with UseWPF enabled, and .NET Framework 4.6.2 or newer. Install DevExpress.Wpf.Grid.Core for code-first setups or DevExpress.Wpf.Grid for designer support.

Why does my TreeList show a flat list instead of a hierarchy?

This happens when KeyFieldName and ParentFieldName are not set on the TreeListView, or when no record qualifies as a root. Verify both field names are set and that exactly one record's parent value does not match any other record's key.

How do I enable drag-and-drop reparenting in a WPF TreeList?

Set AllowDragDrop and AutoExpandOnDrag to True on the TreeListView. Dropping with DropPosition.Inside makes the dragged node a child; handle DropRecord to update the ParentID field or move items between Children collections in your data model.

When should I use unbound mode instead of data binding in TreeList?

Use unbound mode when there is no underlying data source and you build the tree programmatically with TreeListNode instances added to TreeListView.Nodes. It suits static trees or in-memory structures not modeled as collections.