2010-12-14 100 views
1

J'ai une fenêtre avec un contrôle d'arborescence à l'intérieur et un fichier XML. Je veux lier l'arborescence au fichier XML entièrement à partir du code XAML, sans aucun code C# derrière.Comment lier XML à un TreeView sans code derrière pour (MVVM, dataContext de XAML)

Voilà comment je le fais maintenant:

XAML

<Window.Resources> 
    <HierarchicalDataTemplate ItemsSource="{Binding Path=Elements}" x:Key="TreeViewItemData"> 
     <TreeViewItem Header="{Binding Path=Attribute[text].Value}" IsExpanded="True"/> 
    </HierarchicalDataTemplate> 
</Window.Resources> 
<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="40" /> 
     <RowDefinition Height="370*" /> 
    </Grid.RowDefinitions> 
    <TextBlock Text="RD Admin Tool" Grid.Row="0" FontSize="22" FontWeight="Bold" Padding="50,5"></TextBlock> 
    <StackPanel Orientation="Horizontal" Grid.Row ="1"> 
     <Border BorderBrush="#FF7C7B7B" BorderThickness="1" Name="tBorder" Width="200" CornerRadius="5" Background="#FFF5F2F2"> 
      <TreeView Name="OptionsTree" 
         ItemsSource="{Binding Path=Root.Elements}" 
         ItemTemplate="{StaticResource TreeViewItemData}" 
         HorizontalAlignment="Left" VerticalAlignment="Top" 
         Margin="5,0,0,0" FontSize="18" Background="#FFF5F2F2"> 
      </TreeView> 
     </Border> 
     <Canvas Name="OptionContent" Width="445"> 
     </Canvas> 
    </StackPanel> 
</Grid> 

Constructor dans le code derrière:

public MyWindow() 
    { 
     InitializeComponent(); 

     XDocument doc = XDocument.Parse(File.ReadAllText(@"C:\Tree.xml")); 
     this.MyTreeView.DataContext = doc; 
    } 

Mais je voudrais vraiment écrire à partir du XAML et n'ont pas de code derrière.

Une suggestion?

Répondre

2

Vous pouvez utiliser le XmlDataProvider dans XAML pour définir votre XML externe en tant que ressource. Cela peut ensuite être référencé et lié à vos différents éléments dans XAML.

Promenade à travers se trouve here ... en plus d'un échantillon MSDN utilise la XmlDataProvider en conjonction avec un TreeViewhere

+0

me devança! :) –

+0

@Stuart Nous avons au moins eu des liens différents ... tout n'était pas en vain ... :) –

+0

Les gars, merci pour les commentaires, mais j'essaie de le faire fonctionner avec le TreeView et il montre vide (pas de nœuds). Pouvez-vous mettre en place un échantillon de code? Merci encore –