private void trvBooks_Drop(object sender, DragEventArgs e)
        {
            try
            {
                if (e.Data.GetDataPresent(DataFormats.FileDrop, true))
                {
                    string[] fileNames = e.Data.GetData(DataFormats.FileDrop, true) as string[];

                    if (fileNames != null && fileNames.Length > 0)
                    {
                        TreeViewItem      trvNode    = new BauMvvm.Views.Tools.ToolsWpf().FindAncestor <TreeViewItem>((DependencyObject)e.OriginalSource);
                        BaseNodeViewModel nodeTarget = null;

                        // Si se ha encontrado algún nodo, recoge el objeto ViewModel
                        if (trvNode != null)
                        {
                            nodeTarget = trvNode.Header as BaseNodeViewModel;
                        }
                        // Crea los nodos de eBook
                        ViewModel.CreateEBookNodes(nodeTarget, fileNames,
                                                   BookLibraryPlugin.MainInstance.HostPluginsController.ControllerWindow.ShowQuestion("¿Desea eliminar los archivos originales?"));
                    }
                }
            }
            catch (Exception exception)
            {
                BookLibraryPlugin.MainInstance.HostPluginsController.ControllerWindow.ShowMessage("Excepción al recoger los archivos: " + exception.Message);
            }
        }
        private void trvExplorer_Drop(object sender, DragEventArgs e)
        {
            try
            {
                if (e.Data.GetDataPresent(DataFormats.FileDrop, true))
                {
                    string[] fileNames = e.Data.GetData(DataFormats.FileDrop, true) as string[];

                    if (fileNames != null && fileNames.Length > 0)
                    {
                        TreeViewItem           trvNode    = new BauMvvm.Views.Tools.ToolsWpf().FindAncestor <TreeViewItem>((DependencyObject)e.OriginalSource);
                        IHierarchicalViewModel nodeTarget = null;

                        // Si se ha encontrado algún nodo, recoge el objeto ViewModel
                        if (trvNode != null)
                        {
                            nodeTarget = trvNode.Header as IHierarchicalViewModel;
                        }
                    }
                }
            }
            catch (Exception exception)
            {
                ViewModel.PlugStudioController.ControllerWindow.ShowMessage("Excepción al recoger los archivos: " + exception.Message);
            }
        }
        /// <summary>
        ///		Obtiene el nodo destino en el árbol a partir de los datos de un evento
        /// </summary>
        private BaseNodeViewModel GetTreeNodeFromEventTarget(DependencyObject eventTarget)
        {
            TreeViewItem trvNode = new BauMvvm.Views.Tools.ToolsWpf().FindAncestor <TreeViewItem>((DependencyObject)eventTarget);

            if (trvNode != null)
            {
                return(trvNode.Header as BaseNodeViewModel);
            }
            else
            {
                return(null);
            }
        }