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