c# - LINQ XML 查询 : How do I perform query for binding?

标签 c# xml linq xaml

这是简化的 XML:

<Product>  <Name>Red Chair</Name>  <Price>29.5</Price>   </Product> 

这是简化的 XAML,其中列表框将显示每个条目的名称和价格:

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

如何在我的 C# 代码中执行 LINQ 查询,以便我可以:

 var products = from ... /* I need code between here and next statement */

 listBox1.DataContext = products;

并且列表框填充了我的 XML 文件中的条目?谢谢。

最佳答案

你可以试试:

var products = doc.Descendants("Product")
                  .Select(x => new { Name = (string) x.Element("Name"),
                                     Price = (decimal) x.Element("Price") });

目前还不清楚这是否是您想要的,但它可能是……然后您会想要将绑定(bind)更改为如下内容:

<TextBlock Text={Binding Name} />           
<TextBlock Text={Binding Price} />         

您可能还想调用 ToList 来实现一次查询 - 我对 XAML 绑定(bind)的了解还不够,无法知道它是否适合您进行缓存。 (我想是的,但是……)

关于c# - LINQ XML 查询 : How do I perform query for binding?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7744022/

相关文章:

java - 使用 JAXB 将对象的内容放入不同类型的新实例中

java - Java 中的 XML 解析和 DOM 管理

java - 关于 REST 响应和 XMLElement

c# - 如何使用linq在where子句中设置条件过滤器?

c# - Entity Framework 查询最大

c# - 重构别人源码的礼仪?

c# - 使用变量创建构造函数的快捷方式 (C# Visual Studio 2010)

c# - C# 中指向根类型类的指针

c# - 从每个用户提供的时间列表中找到所有共同时间

c# - EF 4.3 多重枚举问题