private void xamDataTreeAccount_NodeDragEnd(object sender, Infragistics.DragDrop.DragDropEventArgs e)
        {
            if (e.OperationType != null && e.OperationType == OperationType.Copy)
            {
                XamDataTreeNode origNode = e.Data as XamDataTreeNode;
                if (origNode == null)
                {
                    return;
                }
                PortfolioVM porfVm = origNode.Data as PortfolioVM;
                if (porfVm == null)
                {
                    return;
                }

                XamDataTreeNodeControl treeNodeCtrl = e.DropTarget as XamDataTreeNodeControl;
                if (treeNodeCtrl == null)
                {
                    return;
                }
                AccountVM acctVm = treeNodeCtrl.Node.Data as AccountVM;
                if (acctVm == null)
                {
                    return;
                }

                XElement portfElem = porfVm.Persist();
                var      cloned    = PortfolioVM.Load(acctVm, portfElem);
                acctVm.AddPorfolio(cloned);

                ViewModel.Persist();
            }
        }
示例#2
0
        public static XamDataTreeNode FindTreeNodeFromDataItem(XamDataTree tree, object dataItem)
        {
            XamDataTreeNode targetNode = null;

            Action <XamDataTreeNode, object> findNode = (n, dItem) =>
            {
                if (n.HasChildren)
                {
                    foreach (var item in n.Nodes)
                    {
                        if (targetNode != null)
                        {
                            return;
                        }

                        if (item.Data == dItem)
                        {
                            targetNode = item;
                        }
                    }
                }
            };

            foreach (var node in tree.Nodes)
            {
                if (node.Data == dataItem)
                {
                    return(node);
                }
            }

            foreach (var node in tree.Nodes)
            {
                if (targetNode == null)
                {
                    findNode(node, dataItem);
                }
            }

            return(targetNode);
        }
示例#3
0
        public static IEnumerable <XamDataTreeNode> Descendants(XamDataTreeNode root)
        {
            var nodes = new Stack <XamDataTreeNode>(new[] { root });

            while (nodes.Any())
            {
                XamDataTreeNode node = nodes.Pop();
                yield return(node);

                if (node != null)
                {
                    foreach (var n in node.Nodes)
                    {
                        if (n != null)
                        {
                            nodes.Push(n);
                        }
                    }
                }
            }
        }