在Silverlight(WPF)上使用LINQ填充ComboBox

时间:2011-11-09 22:21:07

标签: c# linq visual-studio-2010 silverlight-4.0 combobox

我尝试使用带有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; 对于每个元素。

提前谢谢! :)

1 个答案:

答案 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;

很抱歉删除了下划线。 :)