/* Bewegt ein bereits bestehendes Item item an eine andere Position (x,y) */ public void moveItem(UIElement item, int x, int y) { Size s = GetTileSize(); double dX = x * s.Width; double dY = y * s.Height; GridCanvas.SetLeft(item, dX); GridCanvas.SetTop(item, dY); SnapToGrid(item); item.InvalidateVisual(); InvalidateVisual(); }
/** Der (hypersensible) MouseClicked Eventhandler (setzt die isSelected-Property) **/ protected override void OnPreviewMouseDown(MouseButtonEventArgs e) { base.OnPreviewMouseDown(e); GridCanvas designer = VisualTreeHelper.GetParent(this) as GridCanvas; if (designer != null) { if ((Keyboard.Modifiers & (ModifierKeys.Shift | ModifierKeys.Control)) != ModifierKeys.None) { this.IsSelected = !this.IsSelected; } else { if (!this.IsSelected) { designer.DeselectAll(); this.IsSelected = true; } } } e.Handled = false; }
/** Der MouseDrag Eventhandler für das GridThumb **/ private void GridThumb_DragDelta(object sender, DragDeltaEventArgs e) { Console.WriteLine("GridThumb"); GridItem item = this.DataContext as GridItem; if (item != null) { GridCanvas GridC = VisualTreeHelper.GetParent(VisualTreeHelper.GetParent(VisualTreeHelper.GetParent(this))) as GridCanvas; Point p = new Point(GridCanvas.GetLeft(item) + e.HorizontalChange, GridCanvas.GetTop(item) + e.VerticalChange); Coordinate coord = null; if (p != null) // wenn objekt gelöscht wurde, wärend wir verschieben ist p == null { coord = GridC.CalcGridCoord(p); // GO server.. if (coord != null) { ClientServerUtil.getInstance().moveItem(item.instanceId, coord.Item1, coord.Item2); #if DEBUG Console.WriteLine("\nObject Moved:"); #endif } } } }