#c# #linq #visual-studio-2010 #silverlight-4.0 #combobox
#c# #linq #visual-studio-2010 #silverlight-4.0 #выпадающий список
Вопрос:
Я пытаюсь загрузить XML-файл в объект с помощью LinQ в Silverlight с помощью WPF, но я не могу заполнить или привязать свой выпадающий список.
Код объекта является:
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.Resu< // 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;
Конечно, вставленный код не содержит ошибок, но не работает.
Выбор языка — это моя комбинация. В linq нет проблем, проблема в том, что я привязываю выпадающий список
Чего я действительно хочу, так это попробовать сделать что-то вроде: MyComboBox.Источник данных = MyClass.name ; для каждого элемента.
заранее спасибо!
Ответ №1:
Я бы посоветовал вам попробовать преобразовать ваш LINQ в список и проверить окно вывода VS на наличие ошибок привязки.
string XmlString = e.Resu<
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;
Извините, что убрал ваши подчеркивания.
Комментарии:
1. спасибо за исправленный код! И что произойдет, если я захочу, чтобы экземпляр «Language_Index» был заполнен выбором linq, а затем попытаюсь загрузить выпадающий список (languageselector) с этим экземпляром language_index ?
![]()
2. Извините, я пробовал код, но он не работает. Может быть, мне нужно что-то указать в XAML? Спасибо
3. Очевидно, вам нужно указать ItemTemplate, чтобы отобразить эти вещи там. например. <Выпадающий список><Выпадающий список. ItemTemplate><DataTemplate><StackPanel><TextBlock Text={Имя привязки}/><TextBlock Text={Статус привязки }/><TextBlock Text={Префикс привязки}/></StackPanel></DataTemplate></ComboBox. ItemTemplate></Выпадающий список>
4. Не беспокойтесь. Я рекомендую WPF, выпущенный Адамом Натаном — очень сильная основа для обучения WPF и полезная также для Silverlight.