示例#1
0
        private void RenameNode(object sender, ExecutedRoutedEventArgs e)
        {
            if (curDbInfoTab.CurrentTreeView.IsInEditMode)
            {
                curDbInfoTab.CurrentTreeView.SelectedItem.EndEdit();
            }
            TreeViewIconsItem selectedNode = curDbInfoTab.CurrentTreeView.SelectedItem as TreeViewIconsItem;

            if (selectedNode != null)
            {
                selectedNode.BeginEdit();
            }
        }
示例#2
0
        private void AddNode(AddNodeCategory category)
        {
            string treeNodeType = labeltree.TreeNodeType;
            //为新节点生成默认文本
            String NodeText = MainWin.getDefaultNodeText(treeNodeType) + (labeltree.NodeCount + 1);
            //尝试从剪贴板中提取文本
            String textFromClipboard = StringUtils.getFirstLineOfString(Clipboard.GetText());

            if (String.IsNullOrEmpty(textFromClipboard) == false && textFromClipboard != LastPasteNodeText && textFromClipboard.IndexOf("/") == -1)
            {
                //检测一下从剪贴板中获取的文本是否有效(即不会导致重名的节点出现)
                String newNodeText = textFromClipboard;
                bool   nodeExisted = labeltree.IsNodeExisted(MainWin.getNewNodePath(category, newNodeText));
                //如果不存在同名的路径
                if (nodeExisted == false)
                {
                    NodeText          = newNodeText;
                    LastPasteNodeText = NodeText;
                }
            }
            //如果还有重复路径的,则循环使用随机数,务必保证路径不会相同
            while (labeltree.IsNodeExisted(MainWin.getNewNodePath(category, NodeText)))
            {
                NodeText = MainWin.getDefaultNodeText(treeNodeType) + new Random().Next() as string;
            }

            //创建默认的节点数据对象
            NodeDataObject dataobject = NodeFactory.CreateDataInfoNode(treeNodeType, DALConfig.getEFConnectionString(curDbInfoTab.dbInfoObject.DatabaseFilePath));

            TreeViewIconsItem newNode = null;

            //在树中添加节点
            switch (category)
            {
            case AddNodeCategory.AddRoot:
                newNode = labeltree.AddRoot(NodeText, dataobject);
                curDbInfoTab.LabelViewObj.SuperTree.AddRoot(NodeText, dataobject);
                break;

            case AddNodeCategory.AddChild:
                newNode = labeltree.AddChild(NodeText, dataobject);
                curDbInfoTab.LabelViewObj.SuperTree.AddChild(NodeText, dataobject);
                break;

            case AddNodeCategory.AddSibling:
                newNode = labeltree.AddSibling(NodeText, dataobject);
                curDbInfoTab.LabelViewObj.SuperTree.AddSibling(NodeText, dataobject);
                break;

            default:
                break;
            }
            if (newNode == null)
            {
                return;
            }
            //新节点,默认不是粗体的
            newNode.FontWeight = FontWeights.Normal;
            //在数据库中创建记录
            if (dataobject.AccessObject != null)
            {
                dataobject.AccessObject.Create(dataobject.DataItem);
            }
            //保存树结构
            curDbInfoTab.SaveTreeToDB(labeltree);
            //自动进入编辑状态
            newNode.BeginEdit();
        }