void TargetDesignCanvas_PointerPressed(object sender, PointerRoutedEventArgs e) { if (createControlFunc == null) { foreach (var v in TargetDesignCanvas.Children) { if (v is ArrowCurveSegment) { (v as ArrowCurveSegment).ChangeActive(false); } if (v is DesignControl) { (v as DesignControl).ChangeActive(false); } } if (DesignManager.SetCurrent != null && Parent != null) { var p = Parent as FrameworkElement; DesignManager.SetCurrent(p.DataContext); } return; } if (DataContext == null) { return; } var dc = DataContext as DesignCanvasViewModel; if (dc == null) { return; } var control = createControlFunc(); if (control == null) { throw new Exception("Can not create control"); } var item = new DesignItem() { TargetControl = control, Left = e.GetCurrentPoint(TargetDesignCanvas).Position.X, Top = e.GetCurrentPoint(TargetDesignCanvas).Position.Y, Width = double.IsNaN(control.Width) ? 200 : control.Width, Height = double.IsNaN(control.Height) ? 150 : control.Height }; dc.ItemList.Add(item); var dcontrol = new DesignControl(); dcontrol.DataContext = item; TargetDesignCanvas.Children.Add(dcontrol); //RefreshDataContext(DataContext); createControlFunc = null; //e.Handled = true; }
DesignConnection getConnectionControl(DesignControl c, RelativePosition type) { var l = c.GetConnectionList(); if (type == RelativePosition.Left) { return(l.FirstOrDefault(v => v.IsLeft)); } if (type == RelativePosition.Right) { return(l.FirstOrDefault(v => v.IsRight)); } if (type == RelativePosition.Bottom) { return(l.FirstOrDefault(v => v.IsBottom)); } if (type == RelativePosition.Top) { return(l.FirstOrDefault(v => v.IsTop)); } return(null); }
void CreateControlInCanvas(FrameworkElement control, double x, double y) { if (control == null) { throw new Exception("Can not create control"); } var dc = DataContext as DesignCanvasViewModel; var item = new DesignItem() { TargetControl = control, Left = x, Top = y, Width = double.IsNaN(control.Width) ? 200 : control.Width, Height = double.IsNaN(control.Height) ? 150 : control.Height }; dc.ItemList.Add(item); var dcontrol = new DesignControl(); dcontrol.DataContext = item; TargetDesignCanvas.Children.Add(dcontrol); }
//void ConnectNode() public void RefreshView(object value) { var vm = value as DesignCanvasViewModel; if (vm == null) { return; } TargetDesignCanvas.Children.Clear(); vm.ItemList.ToList().ForEach(v => { var control = new DesignControl() { DataContext = v }; v.OutLinkList.Clear(); foreach (var outlink in vm.LinkList.Where(u => u.SourceDesignItemID == v.DesignItemID)) { v.OutLinkList.Add(outlink); } v.InLinkList.Clear(); foreach (var inLink in vm.LinkList.Where(u => u.TargetDesignItemID == v.DesignItemID)) { v.InLinkList.Add(inLink); } TargetDesignCanvas.Children.Add(control); }); vm.LinkList.ToList().ForEach(v => { if (!TargetDesignCanvas.Children.Contains(v.LinkLine)) { TargetDesignCanvas.Children.Add(v.LinkLine); } Canvas.SetZIndex(v.LinkLine, 10); }); }