如何获取要在WPF组合框中显示的XML属性?
问题描述:
我有一个简单的XML文档:如何获取要在WPF组合框中显示的XML属性?
<?xml version="1.0" encoding="utf-8" ?>
<languages default="en">
<language code="en" name="English" />
<language code="de" name="Deutsch" />
<language code="es" name="Espanol" />
<language code="fr" name="Français" />
</languages>
其language
节点我已经声明为ItemsSource
在C#中的组合框:
userLanguageComboBox.ItemsSource = languagesXml.Descendants("language");
组合框显示被定义为这样的XAML :
<ComboBox Name="userLanguageComboxBox" DisplayMemberPath="@name" />
问题是,ComboBox生成四个空条目,它似乎没有找到属性(如果我l屋檐出DisplayMemberPath
财产,四个language
节点显示为文本):
我该如何解决这个问题?
(我使用.NET 4.0。)
答
使用LINQ到XML你可以使用所有的name属性:
var names = from n in XElement.Load("xml.xml").Elements("language").Attributes("name") select n.Value;
这个绑定到ComboBox
userLanguageComboBox.ItemsSource = names;
+0
谢谢,那差不多就是这样。我必须对'n.Value'进行选择,并移除DisplayMemberPath以使其工作。 – 2011-04-08 11:44:03
什么您使用的.Net版本?如果您使用.Net 3.5或更高版本,LINQ to XML将成为一个很好的候选人? – tomasmcguinness 2011-04-08 10:44:23
@tomasmcguinness他确实将Linq用于XML,因为“Descendants”是“XContainer”中的一种方法。 – 2011-04-08 10:58:38
谢谢MikeEast。所以对你的查询的一个小改动应该可以解决问题 - languagesXml.Elements(“language”)。Attributes(“name”)select n; – tomasmcguinness 2011-04-08 11:02:04