示例#1
0
        public NodeBaseViewModel(IPamuxView v = null)
        {
            V = v;

            var m = new NodeBaseModel(this);

            m.PropertyChanged += (s, e) => { };

            M = m;
        }
示例#2
0
        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);
        }