private void AppendNode(SelectionRuleNode ruleNode, Node parent) { if (ruleNode != null) { Node node = RuleEditorHelper.CreateNode(ruleNode, _model); if (parent != null) { parent.Nodes.Add(node); } else { _decisionTree.Nodes.Add(node); _decisionTree.DisplayRootNode = node; } if (ruleNode is NaryRuleNode nary) { if (nary.Children.Count > 0) { foreach (SelectionRuleNode item in nary.Children) { AppendNode(item, node); } } } else if (ruleNode is UnaryRuleNode unary && unary.Child != null) { AppendNode(unary.Child, node); } } }
private void _decisionTree_DragEnter(object sender, DragEventArgs e) { if (e.Data.GetData(typeof(Node)) is Node) { e.Effect = DragDropEffects.Move; } else { ButtonItem item = (ButtonItem)e.Data.GetData(typeof(ButtonItem)); if (item == null) { e.Effect = DragDropEffects.None; } else { var node = RuleEditorHelper.CreateNode(item, _model); e.Data.SetData(typeof(Node), node); e.Effect = DragDropEffects.Copy; _validator.ClearFailedValidations(); } } }