wpf - 如何为列表框中的项目做数据模板?

标签 wpf xml linq xaml datatemplate

我有一个 XML 文件(见下文),可以在列表框中显示所有产品名称。 我希望列表框中的每个条目都显示产品名称后跟价格,而不仅仅是产品名称。

如何在 XAML 文件中创建数据模板?谢谢。

简化的 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,它工作正常。现在我只想添加价格。谢谢。

最佳答案

您可以像任何其他 ItemTemplate 一样执行此操作。

确保您绑定(bind)到 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>

关于wpf - 如何为列表框中的项目做数据模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7736220/

相关文章:

wpf - 如何以编程方式导航 WPF UI 元素制表位?

WPF HierarchicalDataTemplate 不会在属性更改时更新 ItemsSource

c# - LINQ To Entities Include + Where 方法

c# - 是否有 LINQ 查询会给我几个最大值的总和?

c# - 数组获得的最小值大于其他值

c# - 在 WPF 窗口中修改调整大小 handle 的光标 ("CanResizeWithGrip"+ "WindowStyle:none")

c# - WPF:如果加载事件中发生异常,应用程序不会崩溃

Android:自定义布局 jar

XML - 分组和合并元素,同时保留所有元素文本

c# - 无法提取元素(按元素名称和属性)