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



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

任何帮助将不胜感激。

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

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 中的节点由 ProductProductID模型类表示,每个类都包含每个属性的属性,以及一个 ViewModel 类,该类包含设置为此 xaml DataContextProduct类的集合。

最新更新