Hi,
ich hoffe ihr könnt mir helfen. Ich habe ein TreeView mit einem HierarchicalDataTemplate. Mein Problem ist, dass immer nur 2 Hierachien angezeigt werden, also meine Hauptliste und deren Subelemente. Allerdings haben meine Subelemente ebenfalls wieder subelemente die wiederum subelemente haben können usw. Nur diese werden wie gesagt nicht angezeigt.
Vielleicht findet ihr ja meinen fehler.
TreeView im XAML
XML-Daten
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| <TreeView x:Name="tvFiles"> <TreeView.ItemTemplate> <HierarchicalDataTemplate ItemsSource="{Binding Path=ChildFileFolders}"> <TextBlock FontWeight="Bold" Text="{Binding Path=Text}" /> <HierarchicalDataTemplate.ItemTemplate> <DataTemplate> <TextBlock Text="{Binding Path=Text}"/> </DataTemplate> </HierarchicalDataTemplate.ItemTemplate> </HierarchicalDataTemplate> </TreeView.ItemTemplate> </TreeView> |
Meine Items Klasse:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51:
| public class FileFolder { #region Fields Collection<FileFolder> childFileFolders; string text; #endregion
#region Constructor public FileFolder() { this.childFileFolders = new Collection<FileFolder>(); }
public FileFolder(string text) : this() { this.text = text; } #endregion
#region Properties public Collection<FileFolder> ChildFileFolders { get { return this.childFileFolders; } }
public string Text { get { return this.text; } set { this.text = value; } } #endregion } |
Und hier noch die zuweisung der Elemente:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| Collection<FileFolder> list = new Collection<FileFolder>(); FileFolder root = new FileFolder(); FileFolder rootChild1 = new FileFolder(); FileFolder rootChild2 = new FileFolder(); FileFolder rootSubChild1 = new FileFolder();
root.Text = "root"; rootChild1.Text = "rootChild1"; rootSubChild1.Text = "rootSubChild1"; rootChild1.ChildFileFolders.Add(rootSubChild1); rootChild2.Text = "rootChild2"; root.ChildFileFolders.Add(rootChild2); root.ChildFileFolders.Add(rootChild1); list.Add(root); tvFiles.ItemsSource = list; |