public void SwapWith(TagWrap second, DragProcessor.SwapMode mode) { if (second == null) { second = new TagWrap(); } if (object.ReferenceEquals(this, second)) { return; } switch (mode) { case DragProcessor.SwapMode.Copy: Tag = second.Tag.GetClone(this); break; case DragProcessor.SwapMode.Swap: var tmpTag = second.Tag; second.Tag = Tag; Tag = tmpTag; break; default: Tag = second.Tag; second.Tag = new Tag(); break; } }
public DragData(object sender, DragEventArgs e) { from = e.Data.GetData(typeof(DragElement)) as DragElement; _mode = GetDragMode(e); var senderElement = ((FrameworkElement)sender).DataContext as IDragElement; var conteiner = ((FrameworkElement)e.OriginalSource).DataContext as IDragElement; if (conteiner is IContainer && ((IContainer)conteiner).AcceptType(senderElement.GetType())) { to = new DragElement(senderElement, conteiner); } else { to = new DragElement(conteiner, senderElement); } }