예제 #1
0
		private void OnDrop(TreeNodeDropObject data)
		{
			var source = data.DataObject.GetData(typeof(PlanViewModel)) as PlanViewModel;
			var target = data.Target as PlanViewModel;
			var parent = source.Parent;
			if (parent == null)
			{
				PlansViewModel.Plans.Remove(source);
				FiresecManager.PlansConfiguration.Plans.Remove(source.Plan);
			}
			else
			{
				parent.RemoveChild(source);
				parent.Plan.Children.Remove(source.Plan);
				parent.Update();
				parent.IsExpanded = true;
			}
			if (target == null)
			{
				PlansViewModel.Plans.Add(source);
				FiresecManager.PlansConfiguration.Plans.Add(source.Plan);
				source.Plan.Parent = null;
			}
			else
			{
				target.IsExpanded = true;
				target.AddChild(source);
				target.Plan.Children.Add(source.Plan);
				source.Plan.Parent = target.Plan;
			}
			FiresecManager.PlansConfiguration.Update();
			ServiceFactory.SaveService.PlansChanged = true;
			PlansViewModel.SelectedPlan = source;
		}
예제 #2
0
		private bool CanDrop(TreeNodeDropObject data)
		{
			var source = data.DataObject.GetData(typeof(PlanViewModel)) as PlanViewModel;
			if (source == null)
				return false;
			var target = data.Target as PlanViewModel;
			if (target == null && source.Parent != null)
				return true;
			if (target == source || target == source.Parent || target.GetAllParents().Contains(source))
				return false;
			return true;
		}
예제 #3
0
		protected override void StartDrag()
		{
			var data = TreeList.SelectedItem as TreeNodeViewModel;
			if (data != null && ValidateStartPoint())
			{
				_dropObject = new TreeNodeDropObject();
				ListViewItem draggedItemContainer = GetItemContainer(data);
				var dataObject = new DataObject(data);
				_dragScrollWaitCounter = 0;
				_dragExpandWaitCounter = 0;
				_scrollViewer = FindScrollViewer(TreeList);
				ServiceFactoryBase.DragDropService.DoDragDrop(dataObject, draggedItemContainer, ShowDragVisual, true, DragEffect);
			}
		}