WPF TreeView递归遍历相关方法

 1         /// <summary>

 2         /// 递归改变组织树选中状态。

 3         /// </summary>

 4         /// <param name="org"></param>

 5         private void RecursionOrgDataTreeStatus(OrgData org)

 6         {

 7             foreach (var item in org.Nodes)

 8             {

 9                 item.IsChecked = org.IsChecked;

10                 if (item.Nodes.Count > 0)

11                 {

12                     RecursionOrgDataTreeStatus(item);

13                 }

14             }

15         }

16 

17 

18          /// 获取选中的组织数据。

19         /// </summary>

20         private void GetCheckedOrgData()

21         {

22             foreach (OrgData orgData in orgDataCollection)

23             {

24                 if(orgData.IsChecked)receiverData.Add(orgData);

25                 if (orgData.HasChild)

26                 {

27                     GetCheckedOrgChildData(orgData);

28                 }

29             }

30         }

31         /// <summary>

32         /// 获取选中组织中子节点选中的数据。

33         /// </summary>

34         private void GetCheckedOrgChildData(OrgData org)

35         {

36             foreach (OrgData orgData in org.Nodes)

37             {

38                 if(orgData.IsChecked)receiverData.Add(orgData);

39                 if (orgData.HasChild) GetCheckedOrgChildData(orgData);

40             }

41         }

42 

43 

44         /// <summary>

45         ///递归取父级节点下选中的节点。

46         /// </summary>

47         /// <param name="org"></param>

48         private void GetCheckedOrgDataByOrgParent(OrgData org)

49         {

50             if (org == null) return;

51             if (org.Parent == null && org.IsChecked) receiverData.Add(org);

52             if (org.Parent != null)

53             {

54                 foreach (var node in org.Parent.Nodes)

55                 {

56                     if (node.IsChecked) receiverData.Add(node);

57                 }

58             }

59             GetCheckedOrgDataByOrgParent(org.Parent);

60         }

61 

62 

63 

64          /// <summary>

65         /// 递归删除节点的父级节点。

66         /// </summary>

67         /// <param name="org"></param>

68         private void DeletedOrgData(OrgData org)

69         {

70             if (org == null) return;

71             if (org.Parent == null) return;

72             receiverData.Remove(org.Parent);

73             DeletedOrgData(org.Parent);

74         }
View Code

 

你可能感兴趣的:(treeview)