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(); } }
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(); }