private static void SelectVertex(DependencyObject vc) { if (DragBehaviour.GetIsTagged(vc)) { HighlightBehaviour.SetHighlighted(vc, false); DragBehaviour.SetIsTagged(vc, false); } else { HighlightBehaviour.SetHighlighted(vc, true); DragBehaviour.SetIsTagged(vc, true); } }
/// <summary> /// Select vertex by setting its tag and highlight value /// </summary> /// <param name="vc">VertexControl object</param> private void SelectVertex(DependencyObject vc) { if (DragBehaviour.GetIsTagged(vc)) { HighlightBehaviour.SetHighlighted(vc, false); DragBehaviour.SetIsTagged(vc, false); vc.ClearValue(DragBehaviour.XSnapModifierProperty); vc.ClearValue(DragBehaviour.YSnapModifierProperty); } else { HighlightBehaviour.SetHighlighted(vc, true); DragBehaviour.SetIsTagged(vc, true); DragBehaviour.SetXSnapModifier(vc, ExaggeratedSnappingXModifier); DragBehaviour.SetYSnapModifier(vc, ExaggeratedSnappingYModifier); } }
void mi_Click(object sender, RoutedEventArgs e) { var menuItem = sender as MenuItem; if (menuItem == null) { return; } var vc = menuItem.Tag as VertexControl; //if clicked vertex is tagged then remove all tagged vertices if (DragBehaviour.GetIsTagged(vc)) { dg_remvertex_Click(null, null); } else //else remove only selected vertex if (vc != null) { SafeRemoveVertex(vc); } }
void dg_Area_VertexSelected(object sender, VertexSelectedEventArgs args) { if (args.MouseArgs.LeftButton == MouseButtonState.Pressed) { if (Keyboard.IsKeyDown(Key.LeftCtrl)) { SelectVertex(args.VertexControl); } } else if (args.MouseArgs.RightButton == MouseButtonState.Pressed) { var countTagged = dg_Area.VertexList.Values.Count(DragBehaviour.GetIsTagged); var isTagged = DragBehaviour.GetIsTagged(args.VertexControl); args.VertexControl.ContextMenu = new ContextMenu(); var mi = new MenuItem { Header = "Delete item" + (isTagged && countTagged > 1 ? "s" : ""), Tag = args.VertexControl, Margin = new Thickness(5) }; mi.Click += mi_Click; args.VertexControl.ContextMenu.Items.Add(mi); args.VertexControl.ContextMenu.IsOpen = true; } }