private void CreateSubGraph(EntityEx group) { ISubGraphModel sgmodel = myDiagram.Model as ISubGraphModel; if (sgmodel == null) { return; } var nodes = MainDataCollection; if (group == null) { var rootCollection = nodes.Where(n => String.IsNullOrEmpty(n.RootName)); foreach (EntityEx entity in rootCollection) { entity.Color = String.Format("#{0:X}{1:X}{2:X}", 80 + rand.Next(100), 80 + rand.Next(100), 80 + rand.Next(100)); entity.IsSubGraph = true; if (group != null) { entity.SubGraphKey = group.Key; } sgmodel.AddNode(entity); } // GraphLinksModel<EntityEx, String, String, Relationship> model = myDiagram.Model as GraphLinksModel<EntityEx, String, String, Relationship>; // model.LinksSource = new ObservableCollection<Relationship>() { // new Relationship() { From="SVMEmailSignatureType", To="ASMComplexSystemType", Text="0..N", ToText="1" } //}; GraphLinksModel <EntityEx, String, String, Relationship> model = myDiagram.Model as GraphLinksModel <EntityEx, String, String, Relationship>; model.LinksSource = mainRelationCollection; } else { var rootCollection = nodes.Where(n => n.RootName.Equals(group.Key)); foreach (EntityEx entity in rootCollection) { entity.Color = String.Format("#{0:X}{1:X}{2:X}", 80 + rand.Next(100), 80 + rand.Next(100), 80 + rand.Next(100)); entity.IsSubGraph = false; if (group != null) { entity.SubGraphKey = group.Key; } sgmodel.AddNode(entity); } } myDiagram.InitialCenteredNodeData = sgmodel.NodesSource.OfType <EntityEx>().First(); }
private void CollapseExpandButton_Click(object sender, RoutedEventArgs e) { Button button = (Button)sender; Group sg = Part.FindAncestor <Group>(button); if (sg != null) { EntityEx subgraphdata = (EntityEx)sg.Data; if (!subgraphdata.IsSubGraph) { return; } if (!subgraphdata.EverExpanded && !sg.IsExpandedSubGraph) { subgraphdata.EverExpanded = true; CreateSubGraph(subgraphdata); } sg.IsExpandedSubGraph = !sg.IsExpandedSubGraph; myDiagram.Panel.CenterPart(sg); } }