/// <summary> /// 判断是否可执行元素替换 /// </summary> /// <param name="beforeConferenceTreeItem"></param> /// <param name="nowConferenceTreeItem"></param> /// <returns></returns> public bool CheckCanInsteadElement(ConferenceTreeItem beforeConferenceTreeItem, ConferenceTreeItem nowConferenceTreeItem) { bool result = true; try { if (beforeConferenceTreeItem != null && nowConferenceTreeItem != null) { //查找拖动目标的子集(不允许父级拖到子级的动作) List <ConferenceTreeItem> beforeItemList = WPFElementManage.FindVisualChildren <ConferenceTreeItem>(beforeConferenceTreeItem).ToList <ConferenceTreeItem>(); //不允许父级拖到子级的动作(返回) if (beforeItemList != null && beforeItemList.Contains(nowConferenceTreeItem)) { result = false; } //不为父子级关系 if (beforeConferenceTreeItem.ACA_Parent == null || beforeConferenceTreeItem.ACA_Parent.Equals(nowConferenceTreeItem)) { result = false; } } } catch (Exception ex) { LogManage.WriteLog(this.GetType(), ex); } return(result); }
/// <summary> /// 子项拖动完成(鼠标点击弹起事件) /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void ConferenceTreeView_PreviewMouseRightButtonUp(object sender, MouseButtonEventArgs e) { try { if (this.conferenceTreeItemVisual.Visibility == System.Windows.Visibility.Visible) { ConferenceTreeItem currentItem = ConferenceTreeItem.currentConferenceTreeItem; if (currentItem != null) { //鼠标点击释放了,不可再拖动 currentItem.isDrag = false; Point pos = e.GetPosition(this.borDiscussTheme); HitTestResult result = VisualTreeHelper.HitTest(this.borDiscussTheme, pos); if (result == null) { //显示虚拟拖拽节点 ConferenceTreeView.conferenceTreeView.conferenceTreeItemVisual.Visibility = System.Windows.Visibility.Collapsed; return; } else { //显示虚拟拖拽节点 ConferenceTreeView.conferenceTreeView.conferenceTreeItemVisual.Visibility = System.Windows.Visibility.Collapsed; } ConferenceTreeItem conferenceTreeItem = WPFElementManage.FindVisualParent <ConferenceTreeItem>(result.VisualHit); // Find your actual visual you want to drag if (conferenceTreeItem == null) { return; } if (conferenceTreeItem == currentItem) { return; } #region old solution //ConferenceTreeItemTransferEntity beforeTransferItem = currentItem.AcademicReviewItemTransferEntity; //ConferenceTreeItemTransferEntity nowTransferItem = conferenceTreeItem.AcademicReviewItemTransferEntity; ////存储选择协议实体和目标协议实体标题 //string title1 = beforeTransferItem.Title; //string title2 = nowTransferItem.Title; ////存储选择协议实体和目标协议实体评论 //string coment1 = beforeTransferItem.Comment; //string coment2 = nowTransferItem.Comment; ////存储选择协议实体和目标协议实体链接 //List<string> list1 = beforeTransferItem.LinkList.ToList<string>(); //List<string> list2 = nowTransferItem.LinkList.ToList<string>(); //beforeTransferItem.Title = title2; //nowTransferItem.Title = title1; //beforeTransferItem.Comment = coment2; //nowTransferItem.Comment = coment1; //beforeTransferItem.LinkList = list2; //nowTransferItem.LinkList = list1; #endregion if (CheckCanInsteadElement(currentItem, conferenceTreeItem)) { //conferenceTreeItem.ContentVisibility = System.Windows.Visibility.Visible; ModelManage.ConferenceTree.InsteadElement(TreeCodeEnterEntity.ConferenceName, currentItem.ACA_Guid, conferenceTreeItem.ACA_Guid, new Action <bool>((successed) => { })); } } } } catch (Exception ex) { LogManage.WriteLog(this.GetType(), ex); } finally { } }