Esempio n. 1
0
			private void FillLayers(ItemsControl root)
			{
				foreach (var dwgLayer in dwgDocument.GetLayers())
				{
					var layerItem = new TreeViewItem
					{
						Header = dwgLayer.Name
					};

					FillEntities(layerItem, dwgLayer);
					root.Items.Add(layerItem);

					// Помещаем в таблицу соответствующий слой при его выделении в дереве
					var dwgLayerCopy = dwgLayer;
					layerItem.Selected += delegate(object sender, RoutedEventArgs args)
						{
							// Отсеиваем маршрутизируемые события от дочерних узлов
							if (layerItem.Equals(args.Source) && propertyGrid != null)
								propertyGrid.SelectedObject = dwgLayerCopy;
						};

					// Повторяем в дереве изменения значений имен слоев в таблице
					dwgLayerCopy.NameChanged += (sender, newName) => layerItem.Header = newName;
				}
			}
        private void moveNode(TreeViewItem node, TreeViewItem movedItem, List<TreeViewItem> movedParent,
            TreeViewItem dropOnItem, List<TreeViewItem> dropOnParent)
        {
            foreach (TreeViewItem tvi in node.Items)
            {
                if (tvi.Equals(movedItem))// && !dropOnItem.Equals(tvi))
                {
                    movedParent.Add(node);
                    //if (tvi.HasItems && dropOnParent.Count == 0) //jeśli jeszcze nie znaleźliśmy parenta dropOn itema to go i tak nie moze byc nizej
                    //moveNode(tvi, movedItem, movedParent, movedGrandParent, dropOnItem, dropOnParent, granPaFound);
                    //Console.WriteLine("ustalamy parenta przenoszonego ");
                }
                //else if (tvi.Equals(movedItem) && dropOnItem.Equals(tvi))
                //{
                //    Console.WriteLine("No drop");
                //}
                else if (dropOnItem.Equals(tvi))// && !tvi.Equals(movedItem) )
                {
                    //dropOnParent.Clear();
                    dropOnParent.Add(node);
                    //Console.WriteLine("ustalamy parenta dropOn");
                    if (tvi.HasItems && movedParent.Count == 0) //jeśli jeszcze nie znaleźliśmy parenta wybranego itema
                        moveNode(tvi, movedItem, movedParent, dropOnItem, dropOnParent);
                }
                else if (tvi.HasItems)
                {
                    moveNode(tvi, movedItem, movedParent, dropOnItem, dropOnParent);
                }
            }

            //sceneChange = true;
        }