wpf-devexpress-dot-xpf-dot-grid-dot-treelistnode-ad246e29.md
Gets or sets whether the expand button is displayed within the node or not.
Namespace : DevExpress.Xpf.Grid
Assembly : DevExpress.Xpf.Grid.v25.2.dll
NuGet Package : DevExpress.Wpf.Grid.Core
public DefaultBoolean IsExpandButtonVisible { get; set; }
Public Property IsExpandButtonVisible As DefaultBoolean
| Type | Description |
|---|---|
| DefaultBoolean |
A DefaultBoolean enumeration value that specifies the expand button’s visibility within the node.
|
Available values:
| Name | Description | Return Value |
|---|---|---|
| True |
The value is true.
|
0
| | False |
The value is false.
|
1
| | Default |
The value is specified by a global option or a higher-level object.
|
2
|
The TreeListView.NodeExpanding event can be handled to dynamically create child nodes. In this instance, when expanding a node, you do not know whether it has child nodes or not. If the node has no child nodes, hide the expand button by setting the IsExpandButtonVisible property to false.
To learn more, see Expanding and Collapsing Nodes.
In this example, the TreeListView displays the file/folder tree. The TreeListView.NodeExpanding event allows you to create child nodes dynamically when a user expands a parent node.
View Example: Load Nodes Dynamically
<dxg:GridControl x:Name="grid">
<dxg:GridControl.Columns>
<dxg:GridColumn FieldName="Name"/>
<dxg:GridColumn FieldName="ItemType"/>
<dxg:GridColumn FieldName="Size">
<dxg:GridColumn.EditSettings>
<dxe:TextEditSettings HorizontalContentAlignment="Right"/>
</dxg:GridColumn.EditSettings>
</dxg:GridColumn>
<dxg:GridColumn FieldName="FullName"/>
</dxg:GridControl.Columns>
<dxg:GridControl.View>
<dxg:TreeListView x:Name="view"
AllowEditing="False"
AutoWidth="True"
NodeExpanding="OnNodeExpanding"/>
</dxg:GridControl.View>
</dxg:GridControl>
public partial class MainWindow : Window {
FileSystemDataProvider Helper { get; set; }
public MainWindow() {
InitializeComponent();
Helper = new FileSystemHelper();
InitDrives();
}
public void InitDrives() {
grid.BeginDataUpdate();
try {
string[] root = Helper.GetLogicalDrives();
foreach (string s in root) {
TreeListNode node = new TreeListNode() { Content = new FileSystemItem(s, "Drive", "<Drive>", s) };
view.Nodes.Add(node);
node.IsExpandButtonVisible = DefaultBoolean.True;
}
}
catch { }
grid.EndDataUpdate();
}
private void OnNodeExpanding(object sender, DevExpress.Xpf.Grid.TreeList.TreeListNodeAllowEventArgs e) {
TreeListNode node = e.Node;
if (node.Tag == null || (bool)node.Tag == false) {
InitFolder(node);
node.Tag = true;
}
}
private void InitFolder(TreeListNode treeListNode) {
grid.BeginDataUpdate();
InitFolders(treeListNode);
InitFiles(treeListNode);
grid.EndDataUpdate();
}
private void InitFolders(TreeListNode treeListNode) {
FileSystemItem item = treeListNode.Content as FileSystemItem;
if (item == null) return;
try {
string[] root = Helper.GetDirectories(item.FullName);
foreach (string s in root) {
try {
TreeListNode node = new TreeListNode() { Content = new FileSystemItem(Helper.GetDirectoryName(s), "Folder", "<Folder>", s) };
treeListNode.Nodes.Add(node);
node.IsExpandButtonVisible = HasFiles(s) ? DefaultBoolean.True : DefaultBoolean.False;
}
catch { }
}
}
catch { }
}
private void InitFiles(TreeListNode treeListNode) {
FileSystemItem item = treeListNode.Content as FileSystemItem;
if (item == null) return;
TreeListNode node;
try {
string[] root = Helper.GetFiles(item.FullName);
foreach (string s in root) {
node = new TreeListNode() { Content = new FileSystemItem(Helper.GetFileName(s), "File", Helper.GetFileSize(s).ToString(), s) };
node.IsExpandButtonVisible = DefaultBoolean.False;
treeListNode.Nodes.Add(node);
}
}
catch { }
}
private bool HasFiles(string path) {
string[] root = Helper.GetFiles(path);
if (root.Length > 0) return true;
root = Helper.GetDirectories(path);
if (root.Length > 0) return true;
return false;
}
}
Public Partial Class MainWindow
Inherits Window
Private Property Helper As FileSystemDataProvider
Public Sub New()
Me.InitializeComponent()
Helper = New FileSystemHelper()
InitDrives()
End Sub
Public Sub InitDrives()
Me.grid.BeginDataUpdate()
Try
Dim root As String() = Helper.GetLogicalDrives()
For Each s As String In root
Dim node As TreeListNode = New TreeListNode() With {.Content = New FileSystemItem(s, "Drive", "<Drive>", s)}
Me.view.Nodes.Add(node)
node.IsExpandButtonVisible = DefaultBoolean.True
Next
Catch
End Try
Me.grid.EndDataUpdate()
End Sub
Private Sub OnNodeExpanding(ByVal sender As Object, ByVal e As TreeList.TreeListNodeAllowEventArgs)
Dim node As TreeListNode = e.Node
If node.Tag Is Nothing OrElse CBool(node.Tag) = False Then
InitFolder(node)
node.Tag = True
End If
End Sub
Private Sub InitFolder(ByVal treeListNode As TreeListNode)
Me.grid.BeginDataUpdate()
InitFolders(treeListNode)
InitFiles(treeListNode)
Me.grid.EndDataUpdate()
End Sub
Private Sub InitFolders(ByVal treeListNode As TreeListNode)
Dim item As FileSystemItem = TryCast(treeListNode.Content, FileSystemItem)
If item Is Nothing Then Return
Try
Dim root As String() = Helper.GetDirectories(item.FullName)
For Each s As String In root
Try
Dim node As TreeListNode = New TreeListNode() With {.Content = New FileSystemItem(Helper.GetDirectoryName(s), "Folder", "<Folder>", s)}
treeListNode.Nodes.Add(node)
node.IsExpandButtonVisible = If(HasFiles(s), DefaultBoolean.True, DefaultBoolean.False)
Catch
End Try
Next
Catch
End Try
End Sub
Private Sub InitFiles(ByVal treeListNode As TreeListNode)
Dim item As FileSystemItem = TryCast(treeListNode.Content, FileSystemItem)
If item Is Nothing Then Return
Dim node As TreeListNode
Try
Dim root As String() = Helper.GetFiles(item.FullName)
For Each s As String In root
node = New TreeListNode() With {.Content = New FileSystemItem(Helper.GetFileName(s), "File", Helper.GetFileSize(s).ToString(), s)}
node.IsExpandButtonVisible = DefaultBoolean.False
treeListNode.Nodes.Add(node)
Next
Catch
End Try
End Sub
Private Function HasFiles(ByVal path As String) As Boolean
Dim root As String() = Helper.GetFiles(path)
If root.Length > 0 Then Return True
root = Helper.GetDirectories(path)
If root.Length > 0 Then Return True
Return False
End Function
End Class
The following code snippet (auto-collected from DevExpress Examples) contains a reference to the IsExpandButtonVisible property.
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.
wpf-treelist-load-nodes-dynamically/CS/DynamicNodeLoading/MainWindow.xaml.cs#L21
view.Nodes.Add(node);
node.IsExpandButtonVisible = DefaultBoolean.True;
}
wpf-treelist-load-nodes-dynamically/VB/DynamicNodeLoading/MainWindow.xaml.vb#L25
Me.view.Nodes.Add(node)
node.IsExpandButtonVisible = DefaultBoolean.True
Next
See Also