XML到WPF嵌套列表视图绑定和多个选择项

时间:2013-10-27 00:06:31

标签: xml wpf product

我是WPF新手并且有以下任务: 我有附加的xml文件显然有两个级别。 如何创建显示第一级 PRODUCT 项目的父列表视图及其属性,并在每个 PRODUCT 项目下我应显示子级别 PRODUCTID 项目另一个列表视图。 此外,我必须使PRODUCT的项目多选。

任何帮助都将不胜感激。

<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>

1 个答案:

答案 0 :(得分:1)

ListView有一个名为ItemTemplate的属性,让您决定要用于显示ListView项目的模板。您可以创建另一个ListView来显示内部级别的产品,将其设置为主ListView的ItemTemplate

   <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中的节点由{em> Models 类ProductProductID表示,每个类包含每个属性的属性,以及 ViewModel 包含Product类集合的类,设置为此xaml的DataContext