private void ExecuteDrop(object parameter) { DropParameters dropParameters = (DropParameters)parameter; TreeViewExItem tvei = dropParameters.DropToItem; IDataObject dataObject = dropParameters.Data as IDataObject; int index = dropParameters.Index; Node node = (tvei == null)?null:tvei.DataContext as Node; if (dataObject.GetDataPresent("NewNode")) { AddNode(node, index, new Node() { Name = "New node" }); } if (dataObject.GetDataPresent("Nodes")) { var nodeList = dataObject.GetData("Nodes") as IEnumerable <Node>; foreach (var item in nodeList) { Node oldNode = item as Node; Node newNode = new Node(); newNode.Name = string.Format("Copy of {0}", oldNode.Name.Replace(" (Drag Allowed)", string.Empty)); AddNode(node, index, newNode); } } return; }
private bool CanExecuteDrop(object parameter) { DropParameters dropParameters = (DropParameters)parameter; TreeViewExItem tvei = dropParameters.DropToItem; IDataObject dataObject = dropParameters.Data as IDataObject; if (!dataObject.GetDataPresent("NewNode") && !dataObject.GetDataPresent("Nodes")) { return(false); } int index = dropParameters.Index; Node node = (tvei == null)?null:tvei.DataContext as Node; if (tvei == null) { return(true); //drop to root } if (index == -1) { return(node.AllowDrop); } else { return(node.AllowInsert); } }
private void ExecuteDrop(object parameter) { DropParameters dropParameters = (DropParameters)parameter; TreeViewExItem tvei = dropParameters.DropToItem; IDataObject dataObject = dropParameters.DropData as IDataObject; int index = dropParameters.Index; Node node = (tvei == null)?null:tvei.DataContext as Node; foreach (string f in dataObject.GetFormats()) { object obj = dataObject.GetData(f); DragContent content = obj as DragContent; if (content != null) { foreach (var item in content.Items.Reverse()) { Node oldNode = (Node)item; Node newNode = new Node(); newNode.Name = string.Format("Copy of {0}", oldNode.Name.Replace(" (Drag Allowed)", string.Empty)); AddNode(node, index, newNode); } } else { AddNode(node, index, new Node() { Name = "New node" }); } } return; }
private void OnDrop(DropParameters arg) { LogData(arg.Event.DropData, nameof(OnDrop)); Debug.WriteLine("Data is null? " + (arg.Event.DataObject == null)); System.Runtime.InteropServices.ComTypes.IDataObject dataObject = arg.Event.DataObject; if (dataObject != null) { ExtractData(nameof(OnDrop), new DataObject(dataObject)); } }