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);
        }