C# 如何将数据从XElement绑定到combobox

C# 如何将数据从XElement绑定到combobox,c#,wpf,xml,combobox,xelement,C#,Wpf,Xml,Combobox,Xelement,XElement博士 <forms xmlns=""> <form> <id>1361</id> <name>TEST3</name> </form> <form> <id>1658</id> <name>TEST4</name> </form> <form> <i

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>

我需要将数据(名称、id)从XElement绑定到WPF组合框。由于某些原因,它不起作用,甚至无法将数据从XML获取到元素列表中。

属性名称区分大小写

你需要改变

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


匹配您的匿名类型。

这里似乎缺少一些内容(除了空结果-我将在下面进行讨论)

  • 您需要在组合框上设置ItemsSource属性

    cBox_NewPat.ItemsSource = ElementsList
    
  • 你应该使用

    cBox_NewPat.DisplayMemberPath = "Name"; 
    
    而不是

    cBox_NewPat.DisplayMemberPath = "name";
    
    xmlForms.Element("forms").Descendants("form")
    
    因为您的匿名类型属性称为“Name”,而不是“Name”。与SelectedValuePath相同

  • 请展示您在GetXmlForm方法中所做的工作——这就是出错的地方。如果执行XElement.Parse(xmlString),那么如果从forms元素中删除namespace属性(xmlns),就可以了。您还需要使用

    xmlForms.Descendants("form")
    
    而不是

    cBox_NewPat.DisplayMemberPath = "name";
    
    xmlForms.Element("forms").Descendants("form")
    

  • 我已经编辑了你的标题。请看,“,其中共识是“不,他们不应该”。这真的很简单,就是将.Element(“表单”)更改为.Element(“表单”)?@Phil,对不起,这是我的错误,我的意思是键入“表单”,但它不起作用,返回空结果这没关系,全部用小写。。当我运行这些代码库时,我得到了一个空异常,你是对的,这是唯一的错误。现在知道了谢谢你花时间回复