private void TableDefinitionControlOnMouseMove(object sender, MouseEventArgs e) { if (!_isInDrag) { return; } _currentPoint = e.GetPosition(_modelViewerContainer); var xCoordinate = _originalLeft + _currentPoint.X - _anchorPoint.X; var yCoordinate = _originalTop + _currentPoint.Y - _anchorPoint.Y; // Move the table definition control Canvas.SetLeft(_tableDefinitionControl, xCoordinate); Canvas.SetTop(_tableDefinitionControl, yCoordinate); // Move all the links. var keyPairValue = _tableDefinitionControls.FirstOrDefault(t => t.Value.Equals(_tableDefinitionControl)); var tableDefinition = keyPairValue.Key; var links = GetAllLinkedLinks(tableDefinition); foreach (var link in links) { var line = _linkDefinitionControls[link]; UpdateRelationShips.RefreshRelationShipPosition( link, _tableDefinitionControls, _modelViewerContainer, line); } }
private void OnLinkDefinitionsChanged(object sender, NotifyCollectionChangedEventArgs e) { if (e.Action == NotifyCollectionChangedAction.Add) { var addedItems = e.NewItems; foreach (var addedItem in addedItems) { var linkDefinition = addedItem as LinkDefinition; if (linkDefinition == null) { continue; } var line = new Line { StrokeThickness = 2, Stroke = Brushes.Black }; _modelViewerContainer.Children.Add(line); Canvas.SetZIndex(line, 1); _linkDefinitionControls.Add(linkDefinition, line); UpdateRelationShips.RefreshRelationShipPosition( linkDefinition, _tableDefinitionControls, _modelViewerContainer, line); } } }