界面组件DevExpress WPF中文教程:Grid - 如何遍历节点?
DevExpress WPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件的衍伸产品,还是以数据为中心的商业智能产品,都能通过DevExpress WPF控件来实现。
节点(Nodes)对应于数据源中的记录,并由TreeListNode对象表示。
Node Iterator允许您遍历节点,而无需编写递归代码。从指定节点开始,直到树中包含的最后一个节点,逐个访问节点。
下图说明了处理节点的顺序。

DevExpress技术交流群11:749942875 欢迎一起进群讨论
要遍历节点,请执行以下操作。
- 创建TreeListNodeIterator类的一个新实例,多个构造函数允许您指定一个开始节点或节点集合,以及是否只处理可见节点。
注意:如果指定了节点集合,则从指定集合中的第一个节点开始处理节点。
- 使用TreeListNodeIterator.MoveNext方法遍历节点,当前处理的节点由TreeListNodeIterator.Current属性返回。每次调用TreeListNodeIterator.MoveNext方法时,节点迭代器移动到层次结构中的下一个节点并更新TreeListNodeIterator.Current 属性。如果当前节点是最后一个节点,TreeListNodeIterator.MoveNext方法返回false。
要将节点迭代器重置为初始状态,请调用TreeListNodeIterator.Reset方法。
示例:如何遍历所有可见节点
此示例展示了如何遍历所有可见节点来展开具有4个子节点或更多子节点的节点,具有少于4个子节点的节点将被折叠。

MainWindow.xaml
<dxg:GridControl x:Name="grid" AutoGenerateColumns="AddNew" EnableSmartColumnsGeneration="True" Loaded="OnGridLoaded"> <dxg:GridControl.View> <dxg:TreeListView x:Name="view" AutoWidth="True" KeyFieldName="ID" ParentFieldName="ParentID"/> </dxg:GridControl.View> </dxg:GridControl>
MainWindow.xaml.cs
void SmartExpandNodes(int minChildCount) {
TreeListNodeIterator nodeIterator = new TreeListNodeIterator(view.Nodes, true);
while (nodeIterator.MoveNext())
nodeIterator.Current.IsExpanded = nodeIterator.Current.Nodes.Count >= minChildCount;
}
void OnGridLoaded(object sender, RoutedEventArgs e) {
SmartExpandNodes(4);
}
MainWindow.xaml.vb
Private Sub SmartExpandNodes(ByVal minChildCount As Integer) Dim nodeIterator As TreeListNodeIterator = New TreeListNodeIterator(Me.view.Nodes, True) While nodeIterator.MoveNext() nodeIterator.Current.IsExpanded = nodeIterator.Current.Nodes.Count >= minChildCount End While End Sub Private Sub OnGridLoaded(ByVal sender As Object, ByVal e As RoutedEventArgs) SmartExpandNodes(4) End Sub
浙公网安备 33010602011771号