2009-12-09 6 views
2

Je souhaite lier le code XML suivant à deux contrôles dans WPF.Liste XML de liaison WPF

Chaque nom de catégorie doit se lier à la source d'une zone de liste déroulante des éléments, puis lorsqu'une catégorie est sélectionnée dans la zone de liste déroulante Je veux lier la liste des produits de la catégorie sélectionnée à un listview

Voici XML:

<?xml version="1.0" encoding="utf-8" ?> 
<Categories> 
    <Category Name="Category1"> 
    <Products> 
     <Product Name="Product 1"/> 
     <Product Name="Product 2"/> 
    </Products> 
    </Category> 
    <Category Name="Category2"> 
    <Products> 
     <Product Name="Product 1"/> 
     <Product Name="Product 2"/> 
     <Product Name="Product 3"/> 
    </Products> 
    </Category> 
</Categories> 

et ainsi de suite ..

Répondre

2

Mettez votre xml dans un fichier appelé categories.xml, et cela devrait fonctionner ...

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="40" /> 
     <RowDefinition /> 
    </Grid.RowDefinitions> 

    <Grid.Resources> 
     <DataTemplate x:Key="categoryTemplate" DataType="Category"> 
      <TextBlock Text="{Binding [email protected]}" /> 
     </DataTemplate> 
     <DataTemplate x:Key="productTemplate" DataType="Product"> 
      <TextBlock Text="{Binding [email protected]}" /> 
     </DataTemplate> 
    </Grid.Resources> 

    <Grid.DataContext> 
     <XmlDataProvider 
      Source="Categories.xml" XPath="/Categories/Category" /> 
    </Grid.DataContext> 

    <ComboBox 
     x:Name="categoryComboBox" 
     Grid.Row="0" Margin="8" 
     IsSynchronizedWithCurrentItem="True" 
     ItemsSource="{Binding}" ItemTemplate="{StaticResource categoryTemplate}" /> 

    <ListView 
     Grid.Row="1" Margin="8" 
     IsSynchronizedWithCurrentItem="True" 
     ItemsSource="{Binding XPath=Products/Product}" ItemTemplate="{StaticResource productTemplate}" /> 
</Grid> 
+0

Merci Ian, gentil et simple ...! – cjroebuck