Here is a little Extension class to the TreeView control. I created it to add some new functionality that is not available in the base control. It is based on the System.Windows.Forms namespace TreeView but probably can be use relatively easy without too much modification on WPF as well (haven’t tried it yet)
public static class TreeViewEx { public static int CheckedCount(this TreeView tvw) { int count = 0; count = (from TreeNode n in tvw.Nodes where n.Checked select n).Count(); foreach (TreeNode childNode in tvw.Nodes) { count += CheckedCount(childNode); } return count; } public static int CheckedCount(this TreeNode parentNode) { int count = 0; count = (from TreeNode n in parentNode.Nodes where n.Checked select n).Count(); foreach (TreeNode childNode in parentNode.Nodes) { count += CheckedCount(childNode); } return count; } public static List<TreeNode> CheckedNodes(this TreeView tvw) { List<TreeNode> checkedNodes = new List<TreeNode>(); foreach(TreeNode node in (from TreeNode n in tvw.Nodes select n)) { if (node.Checked) checkedNodes.Add(node); checkedNodes.AddRange(node.CheckedNodes().ToArray()); } return checkedNodes; } public static List<TreeNode> CheckedNodes(this TreeNode parentNode) { List<TreeNode> checkedNodes = new List<TreeNode>(); foreach (TreeNode node in (from TreeNode n in parentNode.Nodes select n)) { if (node.Checked) checkedNodes.Add(node); checkedNodes.AddRange(node.CheckedNodes().ToArray()); } return checkedNodes; } public static void ExpandAllParents(this TreeNode node) { TreeNode parent = node.Parent; while (parent != null) { parent.Expand(); parent = parent.Parent; } } }
0 Comments.