我尝试使用带有WPF的Silverlight中的LinQ将XML加载到对象中,但我无法填充或绑定我的组合框。
对象的代码是:
public class Language_Index
{
public string Prefix { get; set; }
public string Status { get; set; }
public string Name { get; set; }
}
我的XML是:
<languages_index>
<item prefix="VBNET" name="Visual Basic .NET" status="enabled" />
<item prefix="CS" name="C#" status="disabled" />
以及加载和显示数据的代码是:
string XmlString = e.Result; // Got all your XML data in to a string
XDocument elem = XDocument.Load(XmlReader.Create(new StringReader(XmlString)));
var feed_language_index = from nod in elem.Descendants("languages_index")
select new Language_Index
{
Name = nod.Element("item").Attribute("name").Value,
Status = nod.Element("item").Attribute("status").Value,
Prefix = nod.Element("item").Attribute("prefix").Value
};
LanguageSelector.ItemsSource = feed_language_index;
当然,粘贴的代码没有错误,但不起作用。 LanguageSelector是我的组合。在linq中没有问题,问题是当我绑定组合框时:)
我真正想要的是尝试做类似的事情: MyComboBox.DataSource = MyClass.name; 对于每个元素。
提前谢谢! :)答案 0 :(得分:1)
我建议您尝试将LINQ转换为列表并检查VS输出窗口是否存在绑定错误。
string XmlString = e.Result;
XDocument elem = XDocument.Load(XmlReader.Create(new StringReader(XmlString)));
var feedLanguages =
(from nod in elem.Descendants("languages_index")
select new Language_Index
{
Name = nod.Element("item").Attribute("name").Value,
Status = nod.Element("item").Attribute("status").Value,
Prefix = nod.Element("item").Attribute("prefix").Value
}).ToList();
LanguageSelector.ItemsSource = feedLanguages;
很抱歉删除了下划线。 :)