public static void RefreshRelationShipPosition( LinkDefinition linkDefinition, Dictionary<TableDefinition, TableDefinitionControl> tableDefinitionControls, Canvas modelViewerContainer, Line line) { var sourceTableDefinition = linkDefinition.Source.TableDefinition; var targetTableDefinition = linkDefinition.Target.TableDefinition; var sourceTableDefinitionControl = tableDefinitionControls[sourceTableDefinition]; var targetTableDefinitionControl = tableDefinitionControls[targetTableDefinition]; var sourceCenterPoint = CalculateTableDefinitionControlCenterPoint(sourceTableDefinitionControl); var targetCenterPoint = CalculateTableDefinitionControlCenterPoint(targetTableDefinitionControl); var sourceTableCoordinateX = Canvas.GetLeft(sourceTableDefinitionControl); var targetTableCoordinateX = Canvas.GetLeft(targetTableDefinitionControl); var sourceTableCoordinateY = Canvas.GetTop(sourceTableDefinitionControl); var targetTableCoordinateY = Canvas.GetTop(targetTableDefinitionControl); line.X1 = sourceTableCoordinateX + sourceCenterPoint.X; line.X2 = targetTableCoordinateX + targetCenterPoint.X; line.Y1 = sourceTableCoordinateY + sourceCenterPoint.Y; line.Y2 = targetTableCoordinateY + targetCenterPoint.Y; }
private void AddLinkCommandExecute() { if (TableDefinitions.Count < 2) { return; } var link = new LinkDefinition { Source = new EndPointDefinition() { ColumnDefinition = TableDefinitions.Last().ColumnDefinitions.First(), TableDefinition = TableDefinitions.Last() }, Target = new EndPointDefinition() { ColumnDefinition = TableDefinitions[TableDefinitions.Count - 2].ColumnDefinitions.First(), TableDefinition = TableDefinitions[TableDefinitions.Count - 2] } }; _linkDefinitions.Add(link); }