private void OnItemDrop(object sender, ItemDropArgs args)
        {
            if (args.DropTarget == null)
            {
                return;
            }

            TreeView.ItemDropStdHandler <DataItem>(args,
                                                   (item) => item.Parent,
                                                   (item, parent) => item.Parent = parent,
                                                   (item, parent) => ChildrenOf(parent).IndexOf(item),
                                                   (item, parent) => ChildrenOf(parent).Remove(item),
                                                   (item, parent, i) => ChildrenOf(parent).Insert(i, item));
        }