我有一个XML文件(见下文),可以在列表框中显示所有产品名称。 我希望列表框中的每个条目都显示Product Name,后跟Price,而不仅仅是Product Name。
如何在XAML文件中执行datatemplate?感谢。
简化的XML文件:
<Product>
<Name>Red Chair</Name>
<Price>29.5</Price>
</Product>
简化的XAML文件:
<DockPanel>
<ListBox Name="listBox1" ItemsSource="{Binding}" Margin="10" >
</ListBox>
</DockPanel>
在我的C#文件中,我使用LINQ从XML文件中收集产品并将var产品分配给listBox1.DataContext,它工作正常。现在我只想添加价格。感谢。
答案 0 :(得分:2)
假设您的ItemsSource类型为IEnumerable<Product>
,带
class Product
{
public string Name { get; set; }
public double Price { get; set; }
}
您可以像这样设置项目模板:
<ListBox Name="listBox1" ItemsSource="{Binding}" Margin="10" >
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text = "{Binding Name}" />
<TextBlock Text = "{Binding Price, StringFormat=f2}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
答案 1 :(得分:2)
您执行此操作与任何其他ItemTemplate
相同。
确保您绑定到Product
,而不是Name
。然后,您可以使用XPath从XML中选择值。
<DockPanel>
<ListBox Name="listBox1"
ItemsSource="{Binding}"
Margin="10" >
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text={Binding XPath=./Name} />
<TextBlock Text={Binding XPath=./Price} />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</DockPanel>