Navigation als TreeView mit XML laden


#1
Sehr geehrte Damen und Herren,

in unserem Silverlight-Projekt nutzen wir Frames und Pages zur Darstellung der Seiten. Die Auflistung der vorhandenen Seiten soll nun in einem TreeView-Element erfolgen, welche mittels einer XML-Datei gespeist wird.

Die XML-Datei soll dabei "Unterordner" berücksichtigen, welche entsprechend im TreeView dargestellt werden sollen. Sie hat folgende Struktur:

Code:
<?xml version="1.0" encoding="utf-8" ?> 
<tree>
  <folder label="Folder 1.0">
    <link label="Link 1.1" url="test1"/>
    <link label="Link 1.2" url="test2"/>
    <link label="Link 1.3" url="test3"/>
  </folder>
  <link labe="link 2.0" url="test4"/>
  <folder label="Folder 3.0">
    <link label="link 3.1" url="test5"/>
    <folder label="Folder 3.2">
      <link label="link 3.2.1" url="test6"/>
      <link label="link 3.2.2" url="test7"/>
    </folder>
  </folder>
</tree>

Dazu wurde eine C#-Klasse `NavigationItem` erstellt:

Code:
public class NavigationItem
{
    public string Label { get; set; }
    public Uri Url { get; set; }
    public List<NavigationItem> SubNavigationItem { get; set; }
}

Das Ergebnis soll im XAML später folgendem Code entsprechen:

Code:
<sdk:TreeView x:Name="NavigationTree" BorderThickness="0" Margin="0,5,0,0">
    <sdk:TreeViewItem Header="Folder 1.0">
        <HyperlinkButton NavigateUri="test1">Link 1.1</HyperlinkButton>
        <HyperlinkButton NavigateUri="test2">Link 1.2</HyperlinkButton>
        <HyperlinkButton NavigateUri="test3">Link 1.3</HyperlinkButton>
    </sdk:TreeViewItem>
    <HyperlinkButton NavigateUri="test4">Link 2.0</HyperlinkButton>
    <sdk:TreeViewItem Header="Folder 3.0">
        <HyperlinkButton NavigateUri="test5">Link 3.1</HyperlinkButton>
        <sdk:TreeViewItem Header="Folder 3.2">
            <HyperlinkButton NavigateUri="test6">Link 3.2.1</HyperlinkButton>
            <HyperlinkButton NavigateUri="test7">Link 3.2.2</HyperlinkButton>
        </sdk:TreeViewItem>
    </sdk:TreeViewItem>
</sdk:TreeView>

Leider bekomme ich es nicht hin, die XML-Datei im TreeView so abzubilden. :(

Wenn ich es nach der Methode versuche, welche hier (Generating Tree View Nodes from XML file in Silverlight 3 Application) gezeigt wird, funktioniert es nur bedingt, da ich nicht weiß, wann/wie/wo ich nach Link und nach Ordner unterscheiden kann...

Für jegliche Hilfe wäre ich sehr dankbar :)

Sollte eine andere Struktur der XML-Datei/C#-Klasse o.ä. cleverer sein, immer her mit Eurem Input :) Vielen Dank!


MfG!