/// <summary> /// 이동하게 되는 노드의 정보를 임시 저장후 삭제한다. /// </summary> /// <param name="index"></param> public void tempMove_NaviPosition(int index) { //포지션을 이동했을 때 포지션을 새로 저장한다. var searchShape = Navidiagram.Items.OfType <NaviShape>().Where(x => x.Index == index).ToList(); if (searchShape.Count == 1) { var srcCon = Navidiagram.Items.OfType <RadDiagramConnection>().Where(x => x.Target == searchShape[0]).ToList(); if (srcCon.Count == 1) { src = srcCon[0]; } else { src = null; } var dstCon = Navidiagram.Items.OfType <RadDiagramConnection>().Where(x => x.Source == searchShape[0]).ToList(); if (dstCon.Count == 1) { dst = dstCon[0]; } else { dst = null; } pointtype = searchShape[0].PointType; create_newIndex = searchShape[0].Index; create_newPositionX = searchShape[0].Position.X; create_newPositionY = searchShape[0].Position.Y; Navidiagram.RemoveShape(searchShape[0]); } }
/// <summary> /// 경로 포인트가 삭제시 경로포인트도 삭제해준다. /// </summary> /// <param name="xPoint"></param> /// <param name="yPoint"></param> public void deleteNaviShape(float xPoint, float yPoint) { var navi = Navidiagram.Items.OfType <NaviShape>().Where(x => x.NaviPointX == xPoint && x.NaviPointY == yPoint).ToList(); if (navi.Count == 1) { Navidiagram.RemoveShape(navi[0]); } reConnection(); }
/// <summary> /// 경로 다이어그램 모델 삭제시 발생하는 이벤트 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void NaviDeleteCommandExecuted(object sender, ExecutedRoutedEventArgs e) { List <NaviShape> deldatas = new List <NaviShape>(); List <RadDiagramConnection> delcons = new List <RadDiagramConnection>(); //삭제 shape 파악 foreach (var item in Navidiagram.SelectedItems) { //NaviShape 가 삭제 되면 3D 부분에서도 삭제해야함. if (item is NaviShape) { NaviShape delshape = item as NaviShape; //VIewer3D.Instance.NaviPointGridRemove(delshape.NaviPointX, delshape.NaviPointY); deldatas.Add(delshape); } else if (item is RadDiagramConnection) { RadDiagramConnection delitem = item as RadDiagramConnection; delcons.Add(delitem); } } if (deldatas.Count > 0) { VIewer3D.Instance.RemoveNaviPoints(); } for (int i = 0; i < delcons.Count; i++) { Navidiagram.RemoveConnection(delcons[i]); } for (int i = 0; i < deldatas.Count; i++) { //삭제되는 shape에 connection 이 있는지 확인한다. //있는경우는 전부 삭제한다. var srcCon = Navidiagram.Items.OfType <RadDiagramConnection>().Where(x => x.Source == deldatas[i]).ToList(); if (srcCon.Count > 0) { foreach (RadDiagramConnection item in srcCon) { Navidiagram.RemoveConnection(item); } } var dstCon = Navidiagram.Items.OfType <RadDiagramConnection>().Where(x => x.Target == deldatas[i]).ToList(); if (dstCon.Count > 0) { foreach (RadDiagramConnection item in dstCon) { Navidiagram.RemoveConnection(item); } } Navidiagram.RemoveShape(deldatas[i]); } reConnection(); if (loadTime == false) { Save(); } resetNodeNumber(); }