/// <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); }
/// <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); } }