Example #1
0
 List<DesignerItem> Arrange(DesignerItem designerItem)
 {
     List<DesignerItem> list = new List<DesignerItem>();
     if (designerItem == null) return list;
     var directSubItems = designerItem.ChildrenDesignerItems;
     designerItem.UpdateExpander();
     if (directSubItems == null || directSubItems.Count == 0) return list;
     var subItems = directSubItems
         .OrderBy(x => Canvas.GetTop(x)).ToList();
     foreach (var sub in subItems)
     {
         var top = double.IsNaN(Canvas.GetTop(designerItem)) ? 0 : Canvas.GetTop(designerItem) + designerItem.ActualHeight + list.Sum(x => x.ActualHeight);
         list.Add(sub);
         var left = Canvas.GetLeft(designerItem) + GetOffset(designerItem);
         Canvas.SetTop(sub, top);
         Canvas.SetLeft(sub, left);
         SavePosition(sub);
         list.AddRange(Arrange(sub));/*递归*/
     }
     return list;
 }
Example #2
0
 void ChangeParent(DesignerItem newParent, DesignerItem designerItem)
 {
     if (newParent != null)
     {
         if (designerItem.ParentDesignerItem != null)
         {
             designerItem.ParentDesignerItem.ChildrenDesignerItems.Remove(designerItem);
         }
         designerItem.UpdateExpander();
         designerItem.ParentDesignerItem = newParent;
         newParent.ChildrenDesignerItems.Add(designerItem);
     }
 }
Example #3
0
        public void DrawChild(DesignerItem designerItem, DesignerItem childItem, List<DesignerItem> list)
        {
            if (designerItem == null) return;
            DrawDesignerItem(childItem);/*创建子节点*/
            childItem.UpdateLayout();
            childItem.SetTemplate();
            var top = Canvas.GetTop(designerItem) + designerItem.ActualHeight + list.Sum(x => x.ActualHeight);
            list.Add(childItem);
            var left = Canvas.GetLeft(designerItem) + GetOffset(designerItem);
            Canvas.SetTop(childItem, top);
            Canvas.SetLeft(childItem, left);
            SavePosition(childItem);
            childItem.UpdateLayout();
            var source = GetItemConnector(designerItem, PARENT_CONNECTOR);
            var sink = GetItemConnector(childItem, "Left");
            if (source == null || sink == null) return;
            #region 创建连线

            var conn = new Connection(source, sink); /*创建连线*/
            DesignerCanvas.Children.Add(conn); /*放到画布上*/
            Panel.SetZIndex(conn, -10000);

            #endregion
            childItem.CanCollapsed = true;
            childItem.UpdateExpander();
        }