0

我是 WPF 的新手,有这个任务要做:我的附件 xml 文件显然有两个级别。如何创建父列表视图以显示第一级产品项目及其属性,并且在每个产品项目下我应该在另一个列表视图中显示子级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>

4

1 回答 1

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

于 2013-10-27T06:25:50.230 回答