2013-10-27 4 views
0

Я новичок в WPF и выполняю это задание: У меня есть прикрепленный файл XML, очевидно, с двумя уровнями. Как создать родительский ListView отображения первого уровня ПРОДУКТА Элементов с его атрибутами и под каждый PRODUCT пункта я должен отображать уровень ребенка PRODUCTID элементов в другой ListView. Кроме того, я должен сделать элементы ПРОДУКТА multi-selectable.Связывание XML с WPF вложенным списком и несколькими элементами выбора

Любая помощь будет оценена по достоинству.

<Products> 
<Product Name="Red" File="FileRed" ColorLock="0"> 
    <ProductID ProductNumber="p01" FlowRate="8" Finish="" CAD="540" USD="520" EU="410"/> 
    <ProductID ProductNumber="p02" FlowRate="5" Finish="" CAD="540" USD="520" EU="410"/> 
</Product> 
<Product Name="Green" File="FileGreen" ColorLock="0"> 
    <ProductID ProductNumber="4000" FlowRate="4" Finish="PowderCoat" CAD="540" USD="520" EU="410"/> 
    <ProductID ProductNumber="4009" FlowRate="4" Finish="Polished" CAD="540" USD="520" EU="410"/>  
    <ProductID ProductNumber="4100" FlowRate="2.5" Finish="PowderCoat" CAD="540" USD="520" EU="410"/>  
    <ProductID ProductNumber="4109" FlowRate="2.5" Finish="Polished" CAD="540" USD="520" EU="410"/>  
</Product> 
<Product Name="Blue" File="FileBlue" ColorLock="0"> 
    <ProductID ProductNumber="2000" FlowRate="15" Finish="PowderCoat" CAD="3370" USD="3210" EU="2530"/> 
</Product> 

+0

Пожалуйста, отправьте образец XML-файла, чтобы упростить получение ответа. – Tony

+0

Вы можете ссылаться на [привязку данных для вложенных коллекций в XAML (WPF и Silverlight) - WebX - Главная страница - Блоги MSDN] (http://blogs.msdn.com/b/harryh/archive/2010/06/12/nested- коллекции-привязки-в-XAML-МОФ-и-silverlight.aspx) –

ответ

1

ListView имеет свойство ItemTemplate который позволяет вам решить, шаблон, в котором вы хотите использовать для отображения элементов в ListView в. Вы можете создать еще один элемент управления ListView для отображения продуктов внутреннего уровня установить его в качестве ItemTemplate главного ListView

<ListView ItemsSource="{Binding Products}" SelectionMode="Multiple"> 
     <ListView.ItemTemplate> 
      <DataTemplate> 
       <StackPanel> 
        <!-- Displays first level attributes --> 
        <TextBlock Text="{Binding Name}"/> 
        <TextBlock Text="{Binding File}"/> 
        <TextBlock Text="{Binding ColorLock}"/> 

        <ListView ItemsSource="{Binding ProductIDs}"> 
         <ListView.ItemTemplate> 
          <DataTemplate> 
           <StackPanel> 
            <!-- Displays the second level attributes --> 
            <TextBlock Text="{Binding ProductNumber}"/> 
            <TextBlock Text="{Binding FlowRate}"/> 
            <TextBlock Text="{Binding Finish}"/> 
            <TextBlock Text="{Binding CAD}"/> 
            <TextBlock Text="{Binding USD}"/> 
            <TextBlock Text="{Binding EU}"/> 
           </StackPanel> 
          </DataTemplate> 
         </ListView.ItemTemplate> 
        </ListView> 

       </StackPanel> 
      </DataTemplate> 
     </ListView.ItemTemplate> 
    </ListView> 

Если предположить, что узлы в вашем XML представлены Модели классов Product и ProductID каждых из которых содержит свойство каждого атрибута , и класс ViewModel, который содержит набор классов Product, заданный как этот xaml's DataContext.

Смежные вопросы