public NodeBaseViewModel(IPamuxView v = null) { V = v; var m = new NodeBaseModel(this); m.PropertyChanged += (s, e) => { }; M = m; }
private bool HitTest(out DependencyObject visualHit, out ActionTypes action, out NodeBaseModel model, out Node view, out NodeBaseViewModel viewModel) { model = null; view = null; viewModel = null; action = ActionTypes.None; var result = VisualTreeHelper.HitTest(LayoutRoot, Mouse.GetPosition(LayoutRoot)); visualHit = result?.VisualHit; if (visualHit == null) { return(false); } var shape = (visualHit as Polygon) as Shape; if (shape == null) { shape = (visualHit as Rectangle) as Shape; if (shape == null) { shape = (visualHit as Ellipse) as Shape; } } viewModel = (shape?.DataContext) as NodeBaseViewModel; if (viewModel == null) { return(false); } view = viewModel.V as Node; if (view == null) { return(false); } model = viewModel.M as NodeBaseModel; if (model == null) { return(false); } if (shape.Name == null) { return(false); } switch (shape.Name) { case "ResizeCorner": action = ActionTypes.Resize; return(true); case "NodePort": action = ActionTypes.Port; return(true); } action = ActionTypes.Drag; return(true); }