/// <summary>
        /// 再帰的にファイル一覧を取得
        /// System.Windows.Controls.TreeViewItemが無いから逆にすっきり
        /// </summary>
        /// <returns>The directory node.</returns>
        /// <param name="directoryInfo">Directory info.</param>
        public static TreeViewItem CreateDirectoryNode(DirectoryInfo directoryInfo)
        {
            Console.WriteLine(directoryInfo.FullName);
            if (!Directory.Exists(directoryInfo.FullName))
            {
                Directory.CreateDirectory(directoryInfo.FullName);
            }

            var directoryNode = new TreeViewItem(directoryInfo.Name,
                                                 directoryInfo.FullName,
                                                 UserXml.GetUserDataFromXml(directoryInfo.FullName)
                                                 );

            if (directoryInfo.GetDirectories().Length > 0 || directoryInfo.GetFiles().Length > 0)
            {
                directoryNode.isDir = true;
            }

            // ディレクトリ
            foreach (var directory in directoryInfo.GetDirectories())
            {
                TreeViewItem item = CreateDirectoryNode(directory);
                item.isDir    = true;
                item.fileName = directory.Name;
                item.FullPath = directory.FullName;
                directoryNode.Items.Add(item);
            }

            // ファイル(2階層はサポートしない)
            foreach (var file in directoryInfo.GetFiles())
            {
                if (Directory.Exists(file.FullName))
                {
                    continue;
                }
                if (!file.Name.EndsWith(".csm", StringComparison.CurrentCulture) &&
                    !file.Name.EndsWith(".mcsm", StringComparison.CurrentCulture)
                    )
                {
                    continue;
                }

                TreeViewItem item = new TreeViewItem(file.Name,
                                                     file.FullName,
                                                     UserXml.GetUserDataFromXml(file.FullName));
                directoryNode.Items.Add(item);
            }

            return(directoryNode);
        }
Example #2
0
        /// <summary>
        /// TreeView Click
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private async void UserDirTree_ItemClick(object sender, ItemClickEventArgs e)
        {
            TreeViewItem2 item = (TreeViewItem2)e.ClickedItem;

            if (item.IsDir)
            {
                ReSet(item);
            }
            else
            {
                if (!File.Exists(item.FullPath))
                {
                    return;
                }
                StorageFile file = await AwaitGetStorageFile(item.FullPath);

                UserData udata = await UserXml.GetUserDataFromXml(file);

                SetEventTable(udata);
            }
        }