TreeViewControl Class
The TreeView control.
Namespace: DevExpress.Xpf.Grid
Assembly: DevExpress.Xpf.Grid.v24.2.dll
NuGet Package: DevExpress.Wpf.Grid.Core
Declaration
Related API Members
The following members return TreeViewControl objects:
Remarks
The TreeViewControl is a navigation single-column control that displays self-referenced and hierarchical data.
More information: TreeView - Get Started
Tip
If you want to display multi-column data, use the TreeListControl.
Bind to Data
The TreeViewControl can display information in a tree from a self-referential (flat) or hierarchical data structure.
API | Description |
---|---|
TreeViewFieldName | Gets or sets the name of a data source field assigned to the TreeViewControl. This is a dependency property. |
TreeDerivationMode | Gets or sets the tree derivation mode. This is a dependency property. |
KeyFieldName | Gets or sets the name of the service field in a data source that contains unique values. This is a dependency property. |
ParentFieldName | Gets or sets the name of the service field in a data source that contains parent node values. This is a dependency property. |
RootValue | Gets or sets the value that root nodes contain in the field specified by the ParentFieldName property. |
ChildNodesPath | Gets or sets the name of the field that contains child nodes. This is a dependency property. |
ChildNodesSelector | Gets or sets a selector that returns the list of child nodes for the processed node. This is a dependency property. |
EnableDynamicLoading | Gets or sets whether to create nodes dynamically when you expand their parent node. This is a dependency property. |
TotalNodesCount | Gets the total number of nodes stored in the TreeViewControl. |
VisibleNodeCount | Gets the total number of nodes displayed in the TreeViewControl. |
Edit Data
The TreeViewControl uses an in-place editor that depends on its content.
API | Description |
---|---|
AllowEditing | Gets or sets whether users can edit node values. This is a dependency property. |
EditSettings | Gets or sets an object that contains the TreeViewControl editor’s settings. This is a dependency property. |
AllowLeaveInvalidEditor | Gets or sets whether an editor that did not pass validation can lose focus. This is a dependency property. |
ValidateNode | Allows you to validate the focused node’s data and specify whether to close the node’s editor. |
Sort Nodes
API | Description |
---|---|
SortOrder | Gets or sets the TreeViewControl‘s sort order. This is a dependency property. |
SortFieldName | Gets or sets the field in a data source by which the TreeViewControl sorts its data. |
SortMode | Gets or sets how the TreeViewControl sorts its data. This is a dependency property. |
StartSorting | Occurs before the TreeViewControl starts a sort operation. |
EndSorting | Occurs after the TreeViewControl has completed a sort operation. |
CustomNodeSort | Allows you to use custom rules to sort data. |
Search and Filter Nodes
The TreeViewControl can display the Search Panel, which allows users to search and filter nodes.
API | Description |
---|---|
ShowSearchPanel | Gets or sets whether to display the Search Panel. This is a dependency property. |
SearchString | Gets or sets the search string specified in the Search Panel. This is a dependency property. |
ShowSearchPanelMRUButton | Gets or sets whether to display the MRU search button in the Search Panel. This is a dependency property. |
SearchPanelHighlightResults | Gets or sets whether to highlight search results within located records. This is a dependency property. |
SearchPanelAllowFilter | Gets or sets whether the TreeViewControl displays only records that match the search criteria. This is a dependency property. |
FilteringMode | Gets or sets how the TreeViewControl filters its nodes. This is a dependency property. |
SearchPanelFindFilter | Gets or sets the type of the comparison operator used to create filter conditions. This is a dependency property. |
SearchPanelParseMode | Gets or sets a mode that specifies how the search string is parsed. This is a dependency property. |
CustomNodeFilter | Allows you to use custom rules to filter nodes. |
Expand and Collapse Nodes
The TreeViewControl allows users to expand/collapse parent nodes to show/hide their children.
API | Description |
---|---|
ShowExpandButtons | Gets or sets whether to show expand buttons. This is a dependency property. |
AutoExpandAllNodes | Gets or sets whether to expand all nodes when the TreeViewControl is loaded. This is a dependency property. |
ExpandNodesOnFiltering | Gets or sets whether to expand a node if its child nodes contain the search string. This is a dependency property. |
ExpandStateFieldName | Gets or sets the field name in a data source that specifies expanded nodes. This is a dependency property. |
ExpandStateBinding | Gets or sets the binding that specifies that nodes are expanded. |
ExpandAllNodes() / CollapseAllNodes() | Expands/collapses all nodes. |
ChangeNodeExpanded(Int32, Boolean) | Specifies the expanded state of a node. |
ExpandNode(Int32) / CollapseNode(Int32) | Expands/collapses the specified node. |
ExpandToLevel(Int32) | Expands the parent nodes down to the specified nesting level. |
NodeExpanding / NodeExpanded | Occurs before/after a node is expanded. |
NodeCollapsing / NodeCollapsed | Occurs before/after a node is collapsed. |
Scroll Nodes
API | Description |
---|---|
AllowPerPixelScrolling | Gets or sets whether per-pixel scrolling is enabled. This is a dependency property. |
AllowScrollAnimation | Gets or sets whether to enable scroll animation. This is a dependency property. |
ScrollAnimationMode | Gets or sets the scroll animation mode. This is a dependency property. |
AutoScrollCurrentNode | Gets or sets whether to horizontally scroll the view when a user focuses a node that does not fit the TreeViewControl. This is a dependency property. |
ScrollIntoView(TreeListNode) | Scrolls the view to the specified node. |
Check Nodes
You can embed check boxes into nodes and allow an end user to check/uncheck them.
API | Description |
---|---|
ShowCheckboxes | Gets or sets whether to display node check boxes. This is a dependency property. |
CheckBoxFieldName | Gets or sets the name of a field in a data source to which check boxes are bound. This is a dependency property. |
CheckBoxValueConverter | Gets or sets a converter that specifies a checkbox value. This is a dependency property. |
AllowIndeterminateCheckState | Gets or sets whether a user can set the node’s check boxes to three states (checked, unchecked and indeterminate). This is a dependency property. |
AllowRecursiveNodeChecking | Gets or sets whether recursive check box selection is enabled. This is a dependency property. |
IsCheckBoxEnabledBinding | Gets or sets the binding that determines whether a node’s check box is enabled. |
CheckAllNodes() / UncheckAllNodes() | Checks/unchecks all nodes. |
ChangeNodeCheckState(Int32, Nullable<Boolean>) | Changes the specified node’s check state. |
NodeCheckStateChanged | Occurs when a node’s check box value is changed. |
Appearance Customization
The TreeViewControl allows you to customize appearance of its elements.
API | Description |
---|---|
NodeStyle | Gets or sets the style applied to data nodes. This is a dependency property. |
NodeDetailsTemplate | Gets or sets the template used to display the node details. This is a dependency property. |
NodeIndent | Gets or sets the node indent’s width. |
ShowRootIndent | Gets or sets whether to show an indent for the root node. |
TreeLineStyle | Gets or sets whether to display tree lines that connect nodes. This is a dependency property. |
UseEvenRowBackground | Specifies whether to use a theme-dependent brush to highlight even nodes. This is a dependency property. |
EvenRowBackground | Gets or sets a theme-dependent brush that highlights even nodes. This is a dependency property. |
HighlightItemOnHover | Gets or sets whether to highlight a node on hover. |
Node Templates
Specify the NodeContentTemplate property if you want to use the same template to display and edit node data.
You can use separate in-place editors to display and edit data. The TreeViewControl
includes templates that allow you to define editors that display (when the control is in browse mode) and edit (when the control is in edit mode) node values:
Template | Description |
---|---|
NodeContentDisplayTemplate | The template that displays node values. |
NodeContentEditTemplate | The template that displays an editor used to edit node values. |
Use the NodeTemplate property if you want to change the appearance of an entire node.
Images
You can embed images into nodes.
API | Description |
---|---|
ShowNodeImages | Gets or sets whether to display node images. This is a dependency property. |
NodeImageSize | Gets or sets the size of the node images. This is a dependency property |
ImageFieldName | Gets or sets the field name in a data source that contains node images. This is a dependency property. |
NodeImageSelector | Gets or sets a selector that chooses a node image based on custom logic. This is a dependency property. |
RefreshNodeImage(TreeListNode) | Reloads the image for the specified node. |
Select, Focus, and Navigate
API | Description |
---|---|
SelectionMode | Gets or sets whether multiple row/cell selection is enabled. This is a dependency property. |
SelectedItem | Gets or sets the focused data row (if row multi-selection is disabled); or the row that was selected first (if row multi-selection is enabled). |
SelectedItems | Gets or sets a list of data objects that correspond to rows/nodes selected within a View. |
CurrentNode | Gets or sets the currently focused node. |
SelectAll() / UnselectAll() | Selects/unselects all nodes. |
BeginSelection() | Prevents selection updates until the DataControlBase.EndSelection method is called. |
EndSelection() | Enables selection updates after calling the DataControlBase.BeginSelection method, and forces an immediate update. |
SelectItem(TreeListNode) / UnselectItem(TreeListNode) | Selects the specified node. |
SelectRange(TreeListNode, TreeListNode) | Selects multiple nodes, while preserving the current selection (if any). |
GetSelectedNodes() | Returns selected nodes. |
IsNodeSelected(TreeListNode) | Indicates whether the specified node is selected. |
SelectionChanged | Occurs after treelist’s selection has been changed. |
CurrentNodeChanged | Occurs after the focused node has been changed. |
CanSelectNode | Occurs when a user tries to select a node and allows you to control whether a user can select a particular node. |
CanUnselectNode | Occurs when a user tries to unselect a node and allows you to control whether a user can unselect a particular node. |
NodeDoubleClick | Occurs when a user double-clicks a node. |
Drag & Drop
API | Description |
---|---|
AllowDragDrop | Gets or sets whether a user can drag and drop nodes. This is a dependency property. |
AutoExpandOnDrag | Gets or sets whether to expand a collapsed group when a user drags a record over this group. This is a dependency property. |
AllowScrollingOnDrag | Gets or sets whether to scroll the view when users drag nodes to its edges. This is a dependency property. |
ShowDragDropHint | Gets or sets whether to display the drag-and-drop hint when a user drags a record. This is a dependency property. |
DragDropHintTemplate | Gets or sets the template that defines the drag-and-drop hint’s appearance. This is a dependency property. |
DropMarkerTemplate | Gets or sets the template that defines the drop marker’s appearance. This is a dependency property. |
StartRecordDrag | Occurs when a drag-and-drop operation is started. |
DragRecordOver | Occurs continuously while a drag-and-drop operation is in progress. |
DropRecord | Occurs when a user drops a record on the drop target element. |
CompleteRecordDragDrop | Occurs when a drag-and-drop operation is completed. |
Context Menu
API | Description |
---|---|
IsNodeMenuEnabled | Gets or sets whether a user can right-click a node to access its context menu. This is a dependency property. |
NodeMenuCustomizations | Allows you to add menu items to a node’s context menu. |
ShowNodeMenu | Occurs before a user opens a node’s context menu and allows you to customize this menu. |
Related GitHub Examples
The following code snippet (auto-collected from DevExpress Examples) contains a reference to the TreeViewControl class.
Note
The algorithm used to collect these code examples remains a work in progress. Accordingly, the links and snippets below may produce inaccurate results. If you encounter an issue with code examples below, please use the feedback form on this page to report the issue.