syncfusion-wpf-treeview — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited syncfusion-wpf-treeview (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
The Syncfusion WPF TreeView (SfTreeView) is a powerful data-oriented control for displaying hierarchical data in a tree structure with expanding and collapsing nodes. It's commonly used to display folder structures, organizational hierarchies, category trees, and nested relationships in WPF applications.
Use this skill when you need to:
This skill provides comprehensive guidance for all TreeView features, from basic setup to advanced customization.
Key Capabilities:
📄 Read: references/getting-started.md
📄 Read: references/data-population.md
📄 Read: references/selection.md
📄 Read: references/checkboxes.md
📄 Read: references/editing.md
📄 Read: references/drag-and-drop.md
📄 Read: references/tree-structure.md
📄 Read: references/appearance.md
📄 Read: references/crud-operations.md
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:syncfusion="http://schemas.syncfusion.com/wpf"
xmlns:Engine="clr-namespace:Syncfusion.UI.Xaml.TreeView.Engine;assembly=Syncfusion.SfTreeView.WPF">
<Grid>
<syncfusion:SfTreeView x:Name="treeView" Width="300">
<syncfusion:SfTreeView.Nodes>
<Engine:TreeViewNode Content="Documents" IsExpanded="True">
<Engine:TreeViewNode.ChildNodes>
<Engine:TreeViewNode Content="Reports"/>
<Engine:TreeViewNode Content="Invoices"/>
</Engine:TreeViewNode.ChildNodes>
</Engine:TreeViewNode>
<Engine:TreeViewNode Content="Pictures" IsExpanded="True">
<Engine:TreeViewNode.ChildNodes>
<Engine:TreeViewNode Content="Vacation"/>
<Engine:TreeViewNode Content="Family"/>
</Engine:TreeViewNode.ChildNodes>
</Engine:TreeViewNode>
</syncfusion:SfTreeView.Nodes>
</syncfusion:SfTreeView>
</Grid>
</Window><syncfusion:SfTreeView x:Name="treeView"
ItemsSource="{Binding Folders}"
ChildPropertyName="SubFolders"
AutoExpandMode="RootNodes">
<syncfusion:SfTreeView.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding FolderName}"
VerticalAlignment="Center"/>
</DataTemplate>
</syncfusion:SfTreeView.ItemTemplate>
</syncfusion:SfTreeView>// ViewModel
public class ViewModel : INotifyPropertyChanged
{
public ObservableCollection<Folder> Folders { get; set; }
public ViewModel()
{
Folders = new ObservableCollection<Folder>
{
new Folder
{
FolderName = "Documents",
SubFolders = new ObservableCollection<Folder>
{
new Folder { FolderName = "Reports" },
new Folder { FolderName = "Invoices" }
}
}
};
}
}
public class Folder : INotifyPropertyChanged
{
public string FolderName { get; set; }
public ObservableCollection<Folder> SubFolders { get; set; }
}<syncfusion:SfTreeView x:Name="treeView"
ItemsSource="{Binding Items}"
ChildPropertyName="Children"
SelectionMode="Multiple"
CheckBoxMode="Recursive"
CheckedItems="{Binding CheckedItems}"
ItemTemplateDataContextType="Node">
<syncfusion:SfTreeView.ItemTemplate>
<DataTemplate>
<Grid>
<CheckBox IsChecked="{Binding IsChecked, Mode=TwoWay}"
FocusVisualStyle="{x:Null}"/>
<TextBlock Text="{Binding Content.Name}"
Margin="25,0,0,0"
VerticalAlignment="Center"/>
</Grid>
</DataTemplate>
</syncfusion:SfTreeView.ItemTemplate>
</syncfusion:SfTreeView><syncfusion:SfTreeView x:Name="treeView"
ItemsSource="{Binding Items}"
ChildPropertyName="Children"
LoadOnDemandCommand="{Binding LoadOnDemandCommand}"/>public class TreeViewViewModel
{
public ICommand LoadOnDemandCommand { get; }
public TreeViewViewModel()
{
LoadOnDemandCommand = new RelayCommand(LoadChildren);
}
private void LoadChildren(object param)
{
var node = param as TreeViewNode;
if (node.ChildNodes.Count == 0)
{
node.PopulateChildNodes(new List<MyModel>
{
new MyModel { Name = "Child 1" },
new MyModel { Name = "Child 2" }
});
node.IsExpanded = true;
}
}
}
public class MyModel
{
public string Name { get; set; }
// Used for hierarchical binding (important for TreeView)
public List<MyModel> Children { get; set; }
}
<syncfusion:SfTreeView x:Name="treeView"
ItemsSource="{Binding Items}"
ChildPropertyName="Children"
AllowDragging="True"
SelectionMode="Multiple"
ItemDropping="TreeView_ItemDropping"/>private void TreeView_ItemDropping(object sender, TreeViewItemDroppingEventArgs e)
{
// Validate drop operation
if (!IsValidDrop(e.TargetNode, e.DraggingNodes))
{
e.Handled = true; // Cancel drop
}
}| Property | Type | Description |
|---|---|---|
ItemsSource | IEnumerable | Data source for bound mode |
ChildPropertyName | string | Property name for child collection |
SelectionMode | SelectionMode | Single, Multiple, Extended, etc. |
SelectedItem | object | Currently selected item |
SelectedItems | ObservableCollection | Multiple selected items |
CheckBoxMode | CheckBoxMode | None, Default, Recursive |
CheckedItems | ObservableCollection | Checked items collection |
AllowDragging | bool | Enable drag and drop |
AllowEditing | bool | Enable inline editing |
AutoExpandMode | AutoExpandMode | AllNodes, RootNodes, None |
ExpandActionTrigger | ExpandActionTrigger | Node or Expander click |
ShowLines | bool | Display tree lines |
ItemTemplate | DataTemplate | Template for item display |
EditTemplate | DataTemplate | Template for editing mode |
ExpanderTemplate | DataTemplate | Template for expander icon |
Display folder and file hierarchies with icons, allowing users to navigate, select, and manage files with drag-and-drop.
Show company hierarchy with employee nodes, supporting selection and expansion to view team structures.
Display product categories with checkboxes for multi-selection, enabling bulk operations on category trees.
Show project files and folders with load-on-demand for large projects, supporting inline editing of file names.
Display nested configuration options with checkboxes for enabling/disabling features hierarchically.
Create hierarchical navigation menus with expandable sections and visual tree lines.
Next Steps: Navigate to the specific reference documentation above based on the feature you need to implement. Start with getting-started.md for initial setup, then explore other features as needed.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.