private void PopulateTreeItems(ItemCollection items, TableDrivedEntityDTO entity, string relationshipPath, string entityPath)
 {
     foreach (var column in entity.Columns)
     {
         var treeItem = new TreeColumnItem();
         treeItem.ColumnID         = column.ID;
         treeItem.ColumnName       = column.Name;
         treeItem.Alias            = column.Alias;
         treeItem.RelationshipPath = relationshipPath;
         treeItem.EntityPath       = entityPath;
         AddColumnNode(items, treeItem, column.Alias);
     }
     foreach (var relationship in entity.Relationships)
     {
         var newrelationshipPath      = (relationshipPath == "" ? "" : relationshipPath + ",") + relationship.ID;
         var newEntityPath            = (entityPath == "" ? "" : entityPath + ",") + relationship.Entity2;
         TreeRelationshipItem relItem = new TreeRelationshipItem();
         relItem.Relationship     = relationship;
         relItem.RelationshipPath = newrelationshipPath;
         relItem.EntityPath       = newEntityPath;
         var node = AddRelationshipNode(items, relItem);
         node.Expanded += Node_Expanded;
         node.Items.Add("Loading...");
     }
 }
        private void Node_Expanded(object sender, RoutedEventArgs e)
        {
            var treeItem = e.Source as RadTreeViewItem;

            if (treeItem != null)
            {
                bool firstTime = false;
                if (treeItem.Items.Count > 0)
                {
                    var firstItem = treeItem.Items[0];
                    if (firstItem is string && firstItem.ToString() == "Loading...")
                    {
                        firstTime = true;
                    }
                }
                if (firstTime)
                {
                    treeItem.Items.Clear();

                    BizRelationship      bizRelationship = new BizRelationship();
                    var                  objectDTO       = treeItem.DataContext as TreeRelationshipItem;
                    var                  entityID        = objectDTO.Relationship.EntityID2;
                    var                  cEntity         = bizEntity.GetTableDrivedEntity(MyProjectManager.GetMyProjectManager.GetRequester(), entityID, EntityColumnInfoType.WithSimpleColumns, EntityRelationshipInfoType.WithRelationships);
                    TreeRelationshipItem relItem         = new TreeRelationshipItem();
                    PopulateTreeItems(treeItem.Items, cEntity, objectDTO.RelationshipPath, objectDTO.EntityPath);
                }
            }
        }
        private RadTreeViewItem AddRelationshipNode(ItemCollection collection, TreeRelationshipItem relationship)
        {
            var node = new RadTreeViewItem();

            node.DataContext = relationship;
            node.Header      = GetNodeHeader(relationship.Relationship.Entity2, DatabaseObjectCategory.Relationship);
            node.ToolTip     = relationship.Relationship.ID + "_" + (string.IsNullOrEmpty(relationship.Relationship.Alias) ? relationship.Relationship.Name : relationship.Relationship.Alias);
            collection.Add(node);
            return(node);
        }