Index: Core/Common/src/Core.Common.Controls.TreeView/TreeViewControl.cs =================================================================== diff -u -r9fb229f4fc4fe2c11e79e344c76ceb220f2dc96a -rced10feb6cf65f11e52fae8360fbf51aa07135ce --- Core/Common/src/Core.Common.Controls.TreeView/TreeViewControl.cs (.../TreeViewControl.cs) (revision 9fb229f4fc4fe2c11e79e344c76ceb220f2dc96a) +++ Core/Common/src/Core.Common.Controls.TreeView/TreeViewControl.cs (.../TreeViewControl.cs) (revision ced10feb6cf65f11e52fae8360fbf51aa07135ce) @@ -564,6 +564,11 @@ } treeNode.StateImageIndex = treeNode.Checked ? checkedCheckBoxStateImageIndex : uncheckedCheckBoxStateImageIndex; } + + if (treeNodeInfo.ExpandOnCreate != null && treeNodeInfo.ExpandOnCreate(treeNode.Tag)) + { + treeNode.Expand(); + } } private void RefreshChildNodes(TreeNode treeNode, TreeNodeInfo treeNodeInfo) Index: Core/Common/test/Core.Common.Controls.TreeView.Test/TreeViewControlTest.cs =================================================================== diff -u -r8e791325754da4938269fdc3af7ef3c71fbcd402 -rced10feb6cf65f11e52fae8360fbf51aa07135ce --- Core/Common/test/Core.Common.Controls.TreeView.Test/TreeViewControlTest.cs (.../TreeViewControlTest.cs) (revision 8e791325754da4938269fdc3af7ef3c71fbcd402) +++ Core/Common/test/Core.Common.Controls.TreeView.Test/TreeViewControlTest.cs (.../TreeViewControlTest.cs) (revision ced10feb6cf65f11e52fae8360fbf51aa07135ce) @@ -652,7 +652,7 @@ var childTreeNodeInfo = new TreeNodeInfo { TagType = typeof(string), - CanRemove = (o, p) => false, + CanRemove = (o, p) => false }; treeViewControl.RegisterTreeNodeInfo(treeNodeInfo); treeViewControl.RegisterTreeNodeInfo(childTreeNodeInfo); @@ -696,12 +696,12 @@ var childStringTreeNodeInfo = new TreeNodeInfo { TagType = typeof(string), - CanRemove = (o, p) => true, + CanRemove = (o, p) => true }; var childIntTreeNodeInfo = new TreeNodeInfo { TagType = typeof(int), - CanRemove = (o, p) => false, + CanRemove = (o, p) => false }; treeViewControl.RegisterTreeNodeInfo(treeNodeInfo); treeViewControl.RegisterTreeNodeInfo(childStringTreeNodeInfo); @@ -854,7 +854,7 @@ { var treeNodeInfo = new TreeNodeInfo { - TagType = typeof(object), + TagType = typeof(object) }; treeViewControl.RegisterTreeNodeInfo(treeNodeInfo); var data = new object(); @@ -1752,6 +1752,51 @@ } } } + + [Test] + public void OnNodeAddedForData_TreeNodeInfoRegisteredWithExpandOnCreateNull_NodeNotExpanded() + { + // Setup + using (var treeViewControl = new TreeViewControl()) + { + treeViewControl.RegisterTreeNodeInfo(new TreeNodeInfo + { + TagType = typeof(object), + ExpandOnCreate = null + }); + + // Call + treeViewControl.Data = new object(); + + // Assert + var treeView = (System.Windows.Forms.TreeView)treeViewControl.Controls[0]; + var treeNode = treeView.Nodes[0]; + Assert.IsFalse(treeNode.IsExpanded); + } + } + + [TestCase(true)] + [TestCase(false)] + public void OnNodeAddedForData_TreeNodeInfoRegisteredWithExpandOnCreateSet_NodeExpandedAccordingly(bool expandOnCreate) + { + // Setup + using (var treeViewControl = new TreeViewControl()) + { + treeViewControl.RegisterTreeNodeInfo(new TreeNodeInfo + { + TagType = typeof(object), + ExpandOnCreate = o => expandOnCreate + }); + + // Call + treeViewControl.Data = new object(); + + // Assert + var treeView = (System.Windows.Forms.TreeView) treeViewControl.Controls[0]; + var treeNode = treeView.Nodes[0]; + Assert.AreEqual(expandOnCreate, treeNode.IsExpanded); + } + } } public class TestObservable : Observable {}