private DragDropEffects CanDropTV1(object draggedObject, TreeItem dropTarget, double verticalPercentage) { Debug.WriteLine($"CanDropTV1 y:{verticalPercentage}"); // Sicherstellen, dass das gezogene Item nicht auf sich selbst oder ein Unterelement gezogen wird if (dropTarget.IsAncestorOfOrEqualTo(draggedObject)) { return(DragDropEffects.None); } // Geht es überhaupt um eines unserer Datenobjekte? var data = dropTarget.Data as DataObjectBase; if (data == null) { return(DragDropEffects.None); } if (!(draggedObject is TreeItem)) { return(DragDropEffects.None); } // anwendungsspezifische Kriterien prüfen, Rückgabe der erlaubten Effekte return(data.Caption.StartsWith(".") ? DragDropEffects.None : DragDropEffects.Move); }
private bool DropTV1(object draggedObject, TreeItem dropTarget, double verticalPercentage) { var source = draggedObject as TreeItem; if (source == null) { return(false); } // Sicherstellen, dass das gezogene Item nicht auf sich selbst oder ein Unterelement gezogen wird if (dropTarget.IsAncestorOfOrEqualTo(draggedObject)) { return(false); } // Anwendungsspezifische Aktionen source.Parent.Items.Remove(source); if (verticalPercentage < 20) { // davor einfügen var parentList = dropTarget.Parent.Items; var pos = parentList.IndexOf(dropTarget); parentList.Insert(pos, source); } else if (verticalPercentage > 80) { // dahinter einfügen var parentList = dropTarget.Parent.Items; var pos = parentList.IndexOf(dropTarget); parentList.Insert(pos + 1, source); } else { // als Unterelement einfügen dropTarget.Items.Add(source); } return(true); }