private RelationContener DrawInheritanceRelation(EntityTypeDesigner baseTypeDesigner, EntityTypeDesigner childTypeDesigner) { var relationContener = (from rc in Designer.Children.OfType <RelationContener>() let ir = rc.Content as InheritanceRelation where ir != null && ir.FromTypeDesigner == childTypeDesigner && ir.ToTypeDesigner == baseTypeDesigner select rc).FirstOrDefault(); if (relationContener != null) { return(relationContener); } var inheritanceRelation = new InheritanceRelation(Designer, childTypeDesigner, baseTypeDesigner, () => Designer.Children.OfType <EntityTypeDesigner>().FirstOrDefault(etd => etd.EntityType.BusinessInstance == EntityType.BusinessInstance.BaseType)); relationContener = new RelationContener(inheritanceRelation); Designer.Children.Add(relationContener); relationContener.SetBinding(Canvas.LeftProperty, new Binding { Source = inheritanceRelation, Path = new PropertyPath("CanvasLeft") }); relationContener.SetBinding(Canvas.TopProperty, new Binding { Source = inheritanceRelation, Path = new PropertyPath("CanvasTop") }); baseTypeDesigner.AddRelationContenerWithoutRelatedProperty(relationContener); childTypeDesigner.AddRelationContenerWithoutRelatedProperty(relationContener); return(relationContener); }
private RelationContener DrawInheritanceRelation(EntityTypeDesigner baseTypeDesigner, EntityTypeDesigner childTypeDesigner) { var relationContener = (from rc in Designer.Children.OfType<RelationContener>() let ir = rc.Content as InheritanceRelation where ir != null && ir.FromTypeDesigner == childTypeDesigner && ir.ToTypeDesigner == baseTypeDesigner select rc).FirstOrDefault(); if (relationContener != null) return relationContener; var inheritanceRelation = new InheritanceRelation(Designer, childTypeDesigner, baseTypeDesigner, () => Designer.Children.OfType<EntityTypeDesigner>().FirstOrDefault(etd => etd.EntityType.BusinessInstance == EntityType.BusinessInstance.BaseType)); relationContener = new RelationContener(inheritanceRelation); Designer.Children.Add(relationContener); relationContener.SetBinding(Canvas.LeftProperty, new Binding { Source = inheritanceRelation, Path = new PropertyPath("CanvasLeft") }); relationContener.SetBinding(Canvas.TopProperty, new Binding { Source = inheritanceRelation, Path = new PropertyPath("CanvasTop") }); baseTypeDesigner.AddRelationContenerWithoutRelatedProperty(relationContener); childTypeDesigner.AddRelationContenerWithoutRelatedProperty(relationContener); return relationContener; }
public InheritanceRelation(DesignerCanvas canvas, EntityTypeDesigner fromTypeDesigner, EntityTypeDesigner toTypeDesigner, Func<EntityTypeDesigner> getToEntityTypeDesigner) :base(canvas, fromTypeDesigner, toTypeDesigner) { InitializeComponent(); InitContextMenuCommandBindings(); SetBinding(XYProperty, new Binding { Source = this, Converter = new InheritanceRelationToXYConverter() }); fromTypeDesigner.EntityType.BaseTypeChanged += () => { ToTypeDesigner = getToEntityTypeDesigner(); if (ToTypeDesigner != null) { RedoXYBinding(); OnAssociationCoordonatesChanged(); RedoBindings(); } }; }