private void MenuItem_Click_3(object sender, RoutedEventArgs e)
        {
            var m      = (ContextMenu)Resources["ImageCtxMenu"];
            var target = m.DataContext as FileWrapper;

            if (target == null)
            {
                return;
            }

            var fdlg = new RenameFileDialog(Properties.Resources.RenameFileDialogTitle)
            {
                DataContext = target,
                Owner       = this,
            };

            target.BeginEdit();

            if (fdlg.ShowDialog() ?? false)
            {
                target.EndEdit();
            }
            else
            {
                target.CancelEdit();
            }
        }
        private void addFolderBtn_Click(object sender, RoutedEventArgs e)
        {
            var fdlg = new RenameFileDialog(Properties.Resources.NewFolderDialogTitle);
            var f    = new FolderWrapper();

            fdlg.DataContext = f;
            fdlg.Owner       = this;
            f.BeginEdit();
            if (!fdlg.ShowDialog().GetValueOrDefault(false))
            {
                return;
            }
            f.EndEdit();
            FolderWrapper parent;

            var item = e.Source as MenuItem;

            if (item != null)
            {
                parent = item.DataContext as FolderWrapper;
            }
            else
            {
                var folder = TreeView.SelectedItem as FolderWrapper;
                parent = folder ?? (FolderWrapper)VModel.Folders[0];
            }

            var v = parent?.Files.OfType <FolderWrapper>();

            if (v != null)
            {
                var folderWrappers = v as FolderWrapper[] ?? v.ToArray();
                if (folderWrappers.Any(o => o.Name == f.Name))
                {
                    var s = f.Name + " ({0})";
                    var i = 0;
                    while (folderWrappers.Any(o => o.Name == string.Format(s, i)))
                    {
                        i++;
                    }

                    f.Name = string.Format(s, i);
                }
            }

            parent?.Files.Insert(0, f);
        }
        private void RenameFolderMenuItem_Click(object sender, RoutedEventArgs e)
        {
            var menuItem = e.Source as MenuItem;
            var target   = menuItem?.DataContext as FolderWrapper;

            if (target == null)
            {
                return;
            }

            var fdlg = new RenameFileDialog
            {
                DataContext = target,
                Owner       = this,
                Title       = Properties.Resources.RenameFolderDialogTitle
            };

            target.BeginEdit();

            if (fdlg.ShowDialog() ?? false)
            {
                var parent = (FolderWrapper)VModel.Folders[0];

                var v = parent.Files.OfType <FolderWrapper>();
                var folderWrappers = v as FolderWrapper[] ?? v.ToArray();
                if (folderWrappers.Any(o => o != target && o.Name == target.Name))
                {
                    var s = target.Name + " ({0})";
                    var i = 0;
                    while (folderWrappers.Any(o => o != target && o.Name == string.Format(s, i)))
                    {
                        i++;
                    }

                    target.Name = string.Format(s, i);
                }

                target.EndEdit();
            }
            else
            {
                target.CancelEdit();
            }
        }