2017-10-05 14 views
0

非常に単純なコンセプトですが、ここでは驚いています。 Pathのような単純なファイルエクスプローラを構築しようとしていますが、まっすぐにはできません。文字列を連結してファイルパスを構築する

パスを構築するための方法は次のとおりです。 - >、Mac用>のMacBook - > MacBook Proに

private string BuildFullPath(List<Project> Children) 
    { 
     string path = string.Empty; 
     foreach(Project project in Children) 
     { 
      if (this.ParentFolder == null) 
      { 
       path = this.Name; 
      } 
      else 
      { 
       path += this.ParentFolder.Name + " > " + this.Name; 
      } 
     } 
     return path; 
    } 

そして、偽のデータが

Projects = new ObservableCollection<Project>(); 
     Project parentOne = new Project("Apple", true, null); 
     Project parentTwo = new Project("Samsung", true, null); 
     Project parentThree = new Project("Google", true, null); 
     Project parentFour = new Project("Amazon", true, null); 

     Project parentOneChildOne; 
     parentOneChildOne = new Project("Mac", true, parentOne); 
     Project parentOneChildTwo; 
     parentOneChildTwo = new Project("iPhone", true, parentOne); 
     Project parentOneChildThree; 
     parentOneChildThree = new Project("iPad", true, parentOne); 
     parentOne.Children.Add(parentOneChildOne); 
     parentOneChildOne.Children.Add(new Project("MacBook", true, parentOneChildOne)); 
     parentOneChildOne.Children.Add(new Project("MacBook Pro", true, parentOneChildOne)); 
     parentOneChildOne.Children.Add(new Project("MacBook Air", true, parentOneChildOne)); 
     projects.Add(parentOne); 

あるので、のMacBook Proのパスは、AppleでなければなりませんMacのためのパスはApple - > Macでなければならないが、それを振るように見えることはできない。この線に沿って

+0

は何プロジェクトのクラスは次のように見えますか?あなたの 'Apple - > Mac-> MacBook - > MacBook Pro'の例で、より良いアイデア – maccettura

+1

を持っています。どこにでも' -'を追加しようとしていません。取得しようとしている文字列と実際に取得している文字列を表示してください。 –

答えて

2

何か....

private string BuildFullPath(Project project) 
    { 
     string path = string.Empty; 
     while(project != null) { 
      if(path != string.Empty) 
       path = "->" + path; 
      path = project.Name + path 
      project = project.ParentFolder; 
     } 
     return path; 
    } 
+0

これはうまくいきました、ありがとうございます。 –

関連する問題