0

XElement 文档。

<forms xmlns="">
  <form>
    <id>1361</id>
    <name>TEST3</name>
  </form>
  <form>
    <id>1658</id>
    <name>TEST4</name>
  </form>
  <form>
    <id>1975</id>
    <name>Mac New Patient</name>
  </form>
  <form>
    <id>2209</id>
    <name>Test Atlantic</name>
  </form>
  <form>
    <id>2565</id>
    <name>Rice Creek Test</name>
  </form>
</forms>

背后的代码

 XElement xmlForms = data.GetXmlForm();
 var ElementsList = from c in xmlForms.Element("Forms").Descendants("form")
 select new { Name = c.Element("name").Value, ID = c.Element("id").Value };

 cBox_NewPat.DataContext = ElementsList; 
 cBox_NewPat.DisplayMemberPath = "name";
 cBox_NewPat.SelectedValuePath = "id";

我需要将 XElement 中的数据(名称,id)绑定到 WPF 组合框。由于某种原因,它无法正常工作,甚至无法将 XML 中的数据获取到元素列表中。

4

2 回答 2

0

属性名称区分大小写。

你需要改变

cBox_NewPat.DisplayMemberPath = "name";
cBox_NewPat.SelectedValuePath = "id";

cBox_NewPat.DisplayMemberPath = "Name";
cBox_NewPat.SelectedValuePath = "ID";

匹配您的匿名类型。

于 2013-04-02T18:55:09.833 回答
0

看起来您在这里遗漏了几件事(除了空结果 - 我将在下面讨论)。

  1. 您需要在组合框上设置 ItemsSource 属性。

    cBox_NewPat.ItemsSource = ElementsList
    
  2. 你应该使用

    cBox_NewPat.DisplayMemberPath = "Name"; 
    

    代替

    cBox_NewPat.DisplayMemberPath = "name";
    

    因为您的匿名类型属性称为“名称”,而不是“名称”。与 SelectedValuePath 相同

  3. 请展示您在 GetXmlForm 方法中所做的事情 - 这是出现问题的地方。如果您执行 XElement.Parse(xmlString),那么如果您从表单元素中删除名称空间属性 (xmlns),它将起作用。您还需要使用

    xmlForms.Descendants("form")
    

    代替

    xmlForms.Element("forms").Descendants("form")
    
于 2013-04-02T18:59:04.453 回答