示例#1
0
 void PasteItemDatas(List<ItemData> copys, ItemData selectedItem, RangeObservableCollection<ItemData> itemsSource, Point clickPoint)
 {
     var list = new List<ItemData>();
     var item = selectedItem;
     if (selectedItem != null)
     {
         var roots = copys.Where(x => x.ItemParentId == item.ItemId);
         foreach (var itemData in roots)
         {
             if (itemData.ItemParentId.IsNullOrEmpty())
             {
                 itemData.Left = clickPoint.X;
                 itemData.Top = clickPoint.Y;
             }
             list.Add(itemData);
             list.AddRange(AddChild(copys, itemData));
         }
         itemsSource.AddRange(list);
     }
     else
     {
         var roots = copys.Where(x => copys.All(y => y.ItemId != x.ItemParentId));
         foreach (var r in roots)
         {
             if (r.ItemParentId.IsNullOrEmpty())
             {
                 r.Left = clickPoint.X;
                 r.Top = clickPoint.Y;
             }
             r.ItemParentId = string.Empty;
             list.Add(r);
             list.AddRange(AddChild(copys, r));
         }
         itemsSource.AddRange(list);
     }
 }
示例#2
0
 List<ItemData> GetItemDatasToBeCopy(List<ItemData> dataItemOnClipBoard, ItemData parentItemData, List<ItemData> itemSource, string type)
 {
     var copys = new List<ItemData>();
     var copyItems = CopyedItems(dataItemOnClipBoard, itemSource, type);
     foreach (var copyItem in copyItems)
     {
         if (copyItem.ItemParentId == string.Empty)
         {
             if (parentItemData != null)
             { copyItem.ItemParentId = parentItemData.ItemId; }
             else
             {
                 copyItem.ItemParentId = string.Empty;
             }
         }
         copys.Add(copyItem);
     }
     return copys;
 }
示例#3
0
        List<ItemData> GetAllCopyItem(List<ItemData> selectedItemDatas, List<ItemData> itemSource)
        {
            var list = selectedItemDatas.Select(d => new ItemData(d.ItemId, d.ItemParentId, d.Text, d.Desc, d.ItemStyle, d.Left, d.Top)).ToList();

            var childrens = new List<ItemData>();
            //把子节点也添加进来
            foreach (var selectedItemData in list)
            {
                var children = GetAllSubItemDatas(itemSource, selectedItemData);
                foreach (var d in children)
                {
                    if (childrens.Any(x => x.ItemId == d.ItemId)) continue;
                    var data = new ItemData(d.ItemId, d.ItemParentId, d.Text, d.Desc, d.ItemStyle, d.Left, d.Top);
                    childrens.Add(data);
                }
            }
            var result = childrens.Where(children => selectedItemDatas.All(x => x.ItemId != children.ItemId)).ToList();
            result.AddRange(list);
            return result;
        }
示例#4
0
 List<ItemData> GetAllSubItemDatas(IList<ItemData> itemDatas, ItemData itemData)
 {
     var result = new List<ItemData>();
     var child = new List<ItemData>();
     var list = itemDatas.Where(x => x.ItemParentId == itemData.ItemId);
     foreach (var subItem in list.Where(subitem => !result.Contains(subitem)))
     {
         child.Add(subItem);
         result.Add(subItem);
         foreach (var item in child)
         {
             result.AddRange(GetAllSubItemDatas(itemDatas, item));
         }
     }
     return result;
 }
示例#5
0
 List<ItemData> AddChild(List<ItemData> itemDatas, ItemData itemData)
 {
     var list = new List<ItemData>();
     var roots = itemDatas.Where(x => x.ItemParentId == itemData.ItemId);
     foreach (var data in roots)
     {
         list.Add(data);
         list.AddRange(AddChild(itemDatas, data));
     }
     return list;
 }