public MainWindow()
        {
            InitializeComponent();
            treeFolderMap        = new List <KeyValuePair <TreeViewItem, FileAndFolderModel> >();
            treeSingleVersionMap = new List <KeyValuePair <TreeViewItem, SingleVersionFile> >();
            treeVersionMap       = new List <KeyValuePair <TreeViewItem, VersionModel> >();
            if (File.Exists("record.xml"))
            {
                XmlDecoder xmlDecoder = new XmlDecoder("record.xml");
                MainFolder = xmlDecoder.MainFolder;
                Versions   = xmlDecoder.Versions;
            }
            else
            {
                MainFolder = new FileAndFolderModel("Folder");
                Versions   = new List <VersionModel>();
            }
            refManager              = new RefManager();
            newFile.IsEnabled       = false;
            refreshFile.IsEnabled   = false;
            deleteFile.IsEnabled    = false;
            newFolder.IsEnabled     = false;
            renameFolder.IsEnabled  = false;
            deleteFolder.IsEnabled  = false;
            createVerion.IsEnabled  = false;
            deleteVersion.IsEnabled = false;
            newRef.IsEnabled        = false;
            deleteRef.IsEnabled     = false;
            //MessageBox.Show(MainFolder.GetTreeInfo(0));
            //MessageBox.Show(VersionModel.ShowAllVersion(Versions));
            ShowFolderTree();
            ShowVersionTree();
            treeView.SelectedItemChanged        += TreeView_SelectedItemChanged;
            treeViewVersion.SelectedItemChanged += TreeViewVersion_SelectedItemChanged;

            /*Directory.CreateDirectory(targetFolder);
             * MessageBox.Show("" + Directory.Exists(targetFolder));
             * Directory.Delete(targetFolder, true); //不能删除非空文件夹
             * MessageBox.Show("" + Directory.Exists(targetFolder));*/
            this.KeyDown        += MainWindow_KeyDown;
            newRef.Click        += NewRef_Click;
            deleteRef.Click     += DeleteRef_Click;
            createVerion.Click  += CreateVerion_Click;
            deleteVersion.Click += DeleteVersion_Click;
            newFolder.Click     += NewFolder_Click;
            newFile.Click       += NewFile_Click;
        }
        private void NewFile_Click(object sender, RoutedEventArgs e)
        {
            if (foundFileOrFolder == null || foundFileOrFolder.Type !=
                FileAndFolderModel.Type_Folder)
            {
                return;
            }
            AskSelectList.InputData inputData     = new AskSelectList.InputData();
            List <String>           refSelectList = new List <string>();

            foreach (VersionModel x in Versions)
            {
                refSelectList.Add(x.FileName);
            }
            inputData.listItems = refSelectList;
            if (AskSelectList.Show("选择引用", inputData) == true)
            {
                VersionModel            versionModel      = Versions[inputData.SelectIndex];
                AskSelectList.InputData inputData2        = new AskSelectList.InputData();
                List <String>           versionSelectList = new List <string>();
                foreach (SingleVersionFile x in versionModel.versionList)
                {
                    versionSelectList.Add(x.VersionName);
                }
                inputData2.listItems = versionSelectList;
                if (AskSelectList.Show("选择版本", inputData2) == true)
                {
                    SingleVersionFile  svf = versionModel.versionList[inputData2.SelectIndex];
                    FileAndFolderModel ffm = new FileAndFolderModel("File");
                    ffm.FileName    = svf.FatherName;
                    ffm.VersionName = svf.VersionName;
                    foundFileOrFolder.Children.Add(ffm);
                    ShowFolderTree();
                }
            }
        }
 private void TreeView_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs <object> e)
 {
     if (treeView.SelectedItem != null)
     {
         FileAndFolderModel fileOrFolder = null;
         TreeViewItem       x            = (TreeViewItem)treeView.SelectedItem;
         foreach (KeyValuePair <TreeViewItem, FileAndFolderModel>
                  pair in treeFolderMap)
         {
             if (pair.Key == x)
             {
                 fileOrFolder = pair.Value;
                 break;
             }
         }
         if (fileOrFolder == null)
         {
             return;
         }
         foundFileOrFolder = fileOrFolder;
         //MessageBox.Show("FileName = " + fileOrFolder.FileName);
         onSelectFileChanged();
     }
 }