2017-05-22 10 views
0

ユーザーが選択したツリー構造を示すTreeViewを作成して作成するStorageFolderを解析します。私はUWP Windows.Storage.StorageFolderを解析してツリービューを追加する

public async Task<TreeViewItem> ParseStorageAsync(Windows.Storage.StorageFolder storage) 
     { 
      var dirNode = new TreeViewItem { Header = storage.Name }; 

      //directories 
      foreach (var dir in await storage.GetFoldersAsync()) 
      { 
       dirNode.Items.Add(ParseStorageAsync(dir)); 
      } 

      //files 
      foreach (var file in await storage.GetFilesAsync()) 
      { 

       TreeViewItem item = new TreeViewItem 
       { 
        Header = Path.GetFileNameWithoutExtension(file.Name), 
        Tag = file.Path 

       }; 
       dirNode.Items.Add(item); 
      } 
      return dirNode; 
     } 

場合:

あまりに
public void CreateTreeView(TreeView tree) 
    { 
       System.Diagnostics.Debug.WriteLine("root : " + root.Name); 
       TreeViewItem racine = new TreeViewItem { Header = root.Name }; 
       racine.Tag = root.Path; 
       tree.Items.Add(ParseStorageAsync(root)); 
    } 

そして、この方法:彼は、私は、このメソッドを呼び出し、選んだ後

private async void browserPathGitDirButton_ClickAsync(object sender, Windows.UI.Xaml.RoutedEventArgs e) 
{ 
      FolderPicker picker = new FolderPicker(); 
      picker.FileTypeFilter.Add("*"); 
      folder = await picker.PickSingleFolderAsync(); 

      if(folder != null) 
      { 
       parser.CreateTreeView(tree, folder); 
       tree.UpdateLayout(); 
      }  
} 

:私は、ファイルを選択するために彼に尋ねたときにこれがありますStorageFolderの代わりにDirectoryInfoクラスを使用すると、WPFプロジェクトでのみ動作しますが、UWPプロジェクトを実行する必要があります。 問題は、この印刷していることである。なぜなら、非同期メソッドの

display ...

それはUWPプロジェクト内の他の方法でフォルダを解析することは可能ですか?

EDIT:私のTreeViewクラスはMicrosoft GitHub上で書かれたライブラリなので、正常に動作しますが、これは問題ではありません。

答えて

1

あなたはそれを実行せずにコレクションにTaskを追加している、あなたはあなたの方法

tree.Items.Add(await ParseStorageAsync(root)); 
+0

を待つ必要があるが、どうもありがとう、私はC#で始まることだし、あなたの答えは非常に非常に便利です! –

関連する問題